有一个主类,任何代码都可以访问,有些代码可以类似,但最好的做法是加载动态类?
候选代码:
static public function __callStatic($mtd,$arg){
// using spl_autoload_register()
$class = '\\framework\\libs\\'.$mtd;
$inst = new $class($arg);
}
Run Code Online (Sandbox Code Playgroud)
句法:
main::dinamicu($data);
Run Code Online (Sandbox Code Playgroud)
我的两分钱:
既然您提到了“最佳实践”,假设您正在谈论类似于服务定位器模式(这是您的main::dinamicu($data);)的东西,那么有些人会认为,当假设是测试驱动开发时,这不是一个好的模式。最好的选择是依赖注入容器,而不是服务定位器。
在某些方面类似于工厂类,容器将负责类的实例化。要清楚地了解如何处理对象创建并查看示例,请参阅下面的示例(Symfony 服务容器):
http://fabien.potencier.org/article/13/introduction-to-the-symfony-service-container
(symfony 服务容器,尽管采用了依赖注入容器,但它仍然用作控制器上的服务定位器,如您发布的代码中所示)