背景资料:
我试图通过将一个公共函数从子类移动到它们扩展的基类来简化我的 Yii 应用程序的结构。
我将loadModel($id)
功能从用户(子)控制器移动到基本控制器。
之前,在 UserController.php 中。这有效:
public function loadModel($id) {
$model = User::model()->findByPk($id);
if ($model === null)
throw new CHttpException(404, 'The requested page does not exist.');
return $model;
}
之后,我把上面的函数去掉了,放到Controller.php里面,UserController继承的,还有很多其他的:
public function loadModel($id) {
$type = modelname(); // returns a string, i.e.: "User"
$model = $type::model()->findByPk($id);
if ($model === null)
throw new CHttpException(404, 'The requested page does not exist.');
return $model;
}
问题:
我已经在我的本地 PC 上尝试了这个,运行 PHP 5.4.4,它按预期工作,但是当它被上传到运行 PHP 5.2 的测试服务器时,这会引发 HTTP 错误 500(内部服务器错误)。查看错误日志,错误为PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
error,指的是第三行的解析操作符。
问题:
- 在这种情况下,解析运算符在 PHP 5.2 上失败的任何原因?和,
- 是否有任何解决方法可以使这项工作具有相同的效果?
==================
附加信息:
我正在使用的全局模型名称函数,它返回模型名称,即:“用户”:
function modelname() {
return Yii::app()->controller->id;
}