【发布时间】:2013-04-20 12:24:04
【问题描述】:
我已将要实例化的类存储在一个可通过 get 和 set 方法访问的变量中:
private $myClass;
public function setClass($myClass) {$this->myClass = $myClass;}
public function getClass() {return $this->myClass;}
现在我想用 get 方法实例化这个类:
$instance = new $getClass()();
并且还可以使用它的一些静态属性:
$staticAttr = $getClass()::$attr;
但是这两行都会引发错误,我想我已经找到了解决方案,但我真的不确定,我觉得我的问题是根本不了解如何做到这一点。或者也许这只是一种糟糕的做法,因此非常气馁?我应该如何最好地解决这个问题?
【问题讨论】:
-
一些关于你为什么这样做的背景会有所帮助。
-
我有一个“组”类,可以根据需要实例化所有其他类的负载。我试图概括它以节省重写任何代码。
-
我觉得这个想法是真的很糟糕,应该劝阻。你应该解释你将要做什么。我认为涉及的动态访问太多了:指向动态实例化对象的动态类名,具有动态访问的静态属性...您的类可能做了太多不同的事情,应该分成几部分。
-
嗨,斯文,你应该这么说很有趣,因为实际上我的整个系统都是动态的。我正在研究一种完全面向对象的服务器端方法来呈现网页,但使用单个类“实体”的扩展。目前它非常粗糙,所以是的,我可能在一个类中有很多方法可以进一步扩展,它应该被分解,但是基本的“EntityGroup”类的行数少于 100 行,只是作为显示其他列表的一种方式实体。
标签: php class methods get instantiation