我决定在我的应用程序中使用单例模式。这对我来说最有意义。然而,就在我觉得自己取得了一些进展的时候,我遇到了另一面墙。
我有一个加载功能。加载功能执行以下操作。
检查以前是否已加载班级。 - 如果是这样 - 返回$ class :: get_instance(); - 否则 - 在各个地方寻找课程 - 如果找到 - 返回$ class :: get_instance(); - 否则返回错误。
在采用Singleton模式之前,我使用load类实例化了类。
在控制器中我会有这个。
$session = $this->load->library('session');
然后,加载类将找到该文件并返回..
return new $class_name;
我希望在改变加载类的方法时可能会调整几行,但这些调整会产生语法错误。
return $class_name::get_instance();
有没有办法在没有语法错误的情况下编写上面的行?
答案 0 :(得分:4)
如何使用call_user_func?
return call_user_func(array($class_name, "get_instance"));
答案 1 :(得分:1)
call_user_func(array($classname, 'getInstance'));
call_user_func($classname .'::getInstance'); // As of 5.2.3
此外,如果您想构建一个为您处理任意对象创建的类管理器,请查看Symfony Dependency Injection Components,并且通常也很容易关注presentation on SlideShare about Dependency Injection with PHP。