php – 将加载的类分配给当前范围内的变量
我正在尝试设置一些可以使用的类,但我不确定如何完成以下操作.
假设我有一个我正在使用的类“foo”,我想使用另一个名为“loader”的类中的函数.这个loader类的目的是加载我可以在“foo”类中使用的各种其他类. 例: class foo { function foo() { $this->load->model(); } } 为此,我首先启动类“加载”: class foo { function foo() { $this->load = new loader; $this->load->model('some_model'); } } 现在我可以使用loader类中的函数.我想要的下一件事是可以从类foo中访问加载的模型.例: class foo { function foo() { $this->load = new loader; $this->load->model('some_model'); $this->some_model->function_from_this_model(); } } 这就是我迷路的地方,因为我不确定如何留在“foo”课程的范围内.在任何给定时间,我都希望能够使用$this-> load->模型(‘some_model’)来加载新模型,该模型可通过$this-> some_model访问.或$this-> load-> something_else(‘some_name’)可通过$this-> some_name获得. 这是一个loader类示例: class loader { function model($model_name) { require('models/'.$model_name.'.php'); $model = new $model_name; // and what to do now,to get it back to the $this var from class foo? } } 但所有这些只发生在loader类的范围内. 有关如何实现这一目标的任何想法? 编辑: 解决方法
您可以使用Singleton,它允许您从另一个类初始化您的类对象.
例: // Loader will access class singleton and set object class loader { function model($model_name,$class) { require('models/'.$model_name.'.php'); $class::init()->$model_name = new $model_name; } } // see new singleton methods class foo { private static $instance public static function init(){ if(is_null(self::$instance)){ $class = __CLASS__; self::$instance = new $class; } return self::$instance; } function foo() { $this->load = new loader; $this->some_model = $this->load->model('some_model',__CLASS__); $this->some_model->function_from_this_model(); } } // init class like this foo::init()->foo(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |