我现在正在使用Yii框架,想要编写类似于这样的代码:
protected static $model = "Customer";
...
public function actionIndex() {
$model::model()->find(...
现在它可以正常工作:
protected static $model = "Customer";
protected static $model_obj;
...
public function __construct($controller, $id) {
$this->model_obj = new self::$model;
...
public function actionIndex() {
$model_obj::model()->find(...
但是为访问静态成员创建对象是不好的。如何避免?
getClass以对象作为第一个参数,不适合此目的。
谷歌说:
$a = constant($myClassName . "::CONSTANT");
$b = call_user_func(array($myClassName, "static_method"));
看起来这是一个非常糟糕的东西。使用它可能会引起许多问题。有其他解决方案吗?
哦!我的问题是另外一个:
$controller::$NAME::model() // error
$controller_name = $controller::$NAME
$controller_name::model() // good
谢谢