包 | system.web.actions |
---|---|
继承 | abstract class CAction » CComponent |
实现 | IAction |
子类 | CCaptchaAction, CInlineAction, CViewAction, CWebServiceAction |
源自 | 1.0 |
版本 | $Id: CAction.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CAction是所有控制器动作类的基类。
CAction用分开的类文件提供了一个分割一个复杂的控制器 到几个简单的动作的途径。
派生类必须实现run()方法, 当action被请求时由controller发起。
一个action实例能通过controller属性访问它的控制器。
CAction用分开的类文件提供了一个分割一个复杂的控制器 到几个简单的动作的途径。
派生类必须实现run()方法, 当action被请求时由controller发起。
一个action实例能通过controller属性访问它的控制器。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
controller | CController | 拥有这个动作的控制器。 | CAction |
id | string | 动作的ID。 | CAction |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
runWithParamsInternal() | 执行一个带有命名参数的对象的方法。 | CAction |
属性详细
controller
属性
只读
public CController getController()
拥有这个动作的控制器。
id
属性
只读
public string getId()
动作的ID。
方法详细
__construct()
方法
public void __construct(CController $controller, string $id)
| ||
$controller | CController | 拥有这个动作的控制器。 |
$id | string | 动作的ID。 |
public function __construct($controller,$id)
{
$this->_controller=$controller;
$this->_id=$id;
}
构造方法。
getController()
方法
public CController getController()
| ||
{return} | CController | 拥有这个动作的控制器。 |
public function getController()
{
return $this->_controller;
}
getId()
方法
public string getId()
| ||
{return} | string | 动作的ID。 |
public function getId()
{
return $this->_id;
}
runWithParams()
方法
(可用自 v1.1.7)
public boolean runWithParams(array $params)
| ||
$params | array | 请求参数(键名=>键值) |
{return} | boolean | 命名参数是否有效的 |
public function runWithParams($params)
{
$method=new ReflectionMethod($this, 'run');
if($method->getNumberOfParameters()>0)
return $this->runWithParamsInternal($this, $method, $params);
else
return $this->run();
}
运行带有请求参数的对象。 这个方法通过CController::runAction()内部调用。
runWithParamsInternal()
方法
(可用自 v1.1.7)
protected boolean runWithParamsInternal(mixed $object, ReflectionMethod $method, array $params)
| ||
$object | mixed | 要执行的对象的方法 |
$method | ReflectionMethod | 方法映射 |
$params | array | 命名参数 |
{return} | boolean | 命名参数是否有效的 |
protected function runWithParamsInternal($object, $method, $params)
{
$ps=array();
foreach($method->getParameters() as $i=>$param)
{
$name=$param->getName();
if(isset($params[$name]))
{
if($param->isArray())
$ps[]=is_array($params[$name]) ? $params[$name] : array($params[$name]);
else if(!is_array($params[$name]))
$ps[]=$params[$name];
else
return false;
}
else if($param->isDefaultValueAvailable())
$ps[]=$param->getDefaultValue();
else
return false;
}
$method->invokeArgs($object,$ps);
return true;
}
执行一个带有命名参数的对象的方法。 这个方法是内部使用。