class Test{
// 展示
CONST DISPLAY = 'display';
/**
* 结果
* @var ActionResult
*/
public $result=null;
/**
* 方法
* @var string
*/
protected $_path = "accounting\deduction\";
/**
* 类型对应方法
* @var array
*/
protected $_func = array(
4 => 'modelDifferences',
3 => 'compensation',
6 => 'matFreight',
5 => 'rebate',
8 => 'lessGoods',
);
/**
* 保存特殊
* @param string $func 方法名
* @param array $data 数据
*/
public function saveSpecial($func, $data)
{
$this->$func(false, $data);
}
/**
* 调用对应的表单类
* @param string $name 类名
* @param array $arguments 参数
* @return BaseForm | string
*/
public function __call($name, $arguments)
{
list($className, $type) = explode('_', $name);
/** @var BaseForm $classInterface */
$classInterface = $this->getSpecialClass($className);
if (!$classInterface) {
return '无可执行方法';
}
switch (strtolower($type)) {
case static::DISPLAY:
return $classInterface->display($arguments[0]);
break;
}
return $classInterface;
}
/**
* 获取特殊处理类
* @param string $className 类型
* @return BaseForm
*/
public function getSpecialClass($className)
{
$className = $this->_path . ucwords($className);
if (!class_exists($className)) {
return null;
}
$reflectionClass = new \ReflectionClass($className);
/** @var BaseForm $classInterface */
return $reflectionClass->newInstance();
}
}