Added new (clean) yii boilerplate
This commit is contained in:
111
framework/web/actions/CAction.php
Normal file
111
framework/web/actions/CAction.php
Normal file
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
/**
|
||||
* CAction class file.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright 2008-2013 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
/**
|
||||
* CAction is the base class for all controller action classes.
|
||||
*
|
||||
* CAction provides a way to divide a complex controller into
|
||||
* smaller actions in separate class files.
|
||||
*
|
||||
* Derived classes must implement {@link run()} which is invoked by
|
||||
* controller when the action is requested.
|
||||
*
|
||||
* An action instance can access its controller via {@link getController controller} property.
|
||||
*
|
||||
* @property CController $controller The controller who owns this action.
|
||||
* @property string $id Id of this action.
|
||||
*
|
||||
* @method run() executes action
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @package system.web.actions
|
||||
* @since 1.0
|
||||
*/
|
||||
abstract class CAction extends CComponent implements IAction
|
||||
{
|
||||
private $_id;
|
||||
private $_controller;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* @param CController $controller the controller who owns this action.
|
||||
* @param string $id id of the action.
|
||||
*/
|
||||
public function __construct($controller,$id)
|
||||
{
|
||||
$this->_controller=$controller;
|
||||
$this->_id=$id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CController the controller who owns this action.
|
||||
*/
|
||||
public function getController()
|
||||
{
|
||||
return $this->_controller;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string id of this action
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the action with the supplied request parameters.
|
||||
* This method is internally called by {@link CController::runAction()}.
|
||||
* @param array $params the request parameters (name=>value)
|
||||
* @return boolean whether the request parameters are valid
|
||||
* @since 1.1.7
|
||||
*/
|
||||
public function runWithParams($params)
|
||||
{
|
||||
$method=new ReflectionMethod($this, 'run');
|
||||
if($method->getNumberOfParameters()>0)
|
||||
return $this->runWithParamsInternal($this, $method, $params);
|
||||
else
|
||||
return $this->run();
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a method of an object with the supplied named parameters.
|
||||
* This method is internally used.
|
||||
* @param mixed $object the object whose method is to be executed
|
||||
* @param ReflectionMethod $method the method reflection
|
||||
* @param array $params the named parameters
|
||||
* @return boolean whether the named parameters are valid
|
||||
* @since 1.1.7
|
||||
*/
|
||||
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]);
|
||||
elseif(!is_array($params[$name]))
|
||||
$ps[]=$params[$name];
|
||||
else
|
||||
return false;
|
||||
}
|
||||
elseif($param->isDefaultValueAvailable())
|
||||
$ps[]=$param->getDefaultValue();
|
||||
else
|
||||
return false;
|
||||
}
|
||||
$method->invokeArgs($object,$ps);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user