首先,我不想扩展一个类。理想情况下,我想这样做。
public function __construct() {
/* Set Framework Variable */
global $Five;
$this =& $Five;
}
我有一个系统,其中变量 $Five 是一个包含其他库的容器类。我可以将它分配给五的局部变量......即
public function __construct() {
/* Set Framework Variable */
global $Five;
$this->Five = $Five;
}
但是,我试图避免这种情况的原因是函数调用会变得有点长。
$this->Five->load->library('library_name');
它有点丑。会好得多。
$this->load->library('library_name');
什么是最好的解决方案?
最佳答案
我觉得
$this->Five->load->library('library_name');
除非您决定让该类扩展助手类,否则将是您的最佳选择。又名
class Something extends Helper_Class
但是,这意味着每次实例化类时都会实例化
Helper_Class
。另一种方法是拥有一个伪静态类,将所有帮助类分配给类成员
public function setGlobals($five)
{
$this->loader = $five->loader;
}
然后调用它
public function __construct($five)
{
someClass::setGlobals($five);
}
如果
$Five
是一个全局变量,那么每次你想使用它时都可以只使用 global $Five
,但是把它放在每个函数的顶部似乎是一种糟糕的编码。另外,我只想做我的公共(public)服务公告,全局变量通常是一个坏主意,您可能想搜索“依赖注入(inject)”或全局变量的替代品。又名
public function __construct($five);
代替
global $five;
全局变量依赖于存在且已经设置的外部变量,而依赖注入(inject)请求一个变量,该变量假设它是 Five 类的一个实例。
如果您运行的是 PHP 5.1(感谢 Gordon),您可以通过执行以下操作来确保该变量是
FiveClass
的一个实例:public function__construct(FiveClass $five);
关于php - 有没有办法重新分配 $this ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2067258/