我有一个我需要在整个对象树中访问的变量。我的设计起初可能看起来很奇怪,但我正在尝试创建一个接口/ API,可以使用尽可能少的代码行访问,并且可以轻松配置。所以忍受我...
Class GrandParent{
public function original(){
$myVar = 'I am needed throughout this method and within the config file';
require('config.php');
}
}
Class Parent{
public function passObj($obj){
//perform actions on obj.
}
public function output(){
//I really need to know the value of $myVar;
return $stuff;
}
}
Class Child{
public function __construct(){
//I really need to know the value of $myVar;
}
}
// config.php:
$parent = new Parent();
$child = new Child();
$parent->passObj($child);
return $parent->output();
// the use case:
$grandparent = new GrandParent($myVar);
echo $grandparent->orignial();
再次说明:通过这种设计,我专注于应该能够轻松修改配置文件的开发人员(同时保持简短而且仅限于必需品)并在祖父对象上调用一个方法(“用例”) ,以获得所需的输出。整个构造应该易于用于开发人员。一切都取决于$ myVar。当然,我仍然希望能够保持每个类的封装。
如何使$myVar
对配置脚本中创建的所有对象实例都可访问
答案 0 :(得分:0)
你可能正在使用Singleton模式。
使用这种模式你可以做到这样的事情:
GrandParent::getInstance()->original();