我有一个静态语言类,它从JSON文件中提取键值对,并将它们放在此类的属性中。这在任何其他代码/类运行之前就会发生。
这个类需要被大约一半的所有其他类及其方法访问。
为了避免在每个方法/类构造函数中使用new Language();
,我目前正在使用与他发布的skwee's answer类似的内容:
class Context {
public $application;
public $logger;
}
========
$context = new Context();
$context->application = new Application();
$context->logger = new Logger(...);
doFoo($context);
========
function doFoo(Context $context) {
$context->application->doStuff();
$context->logger->logThings();
}
然而,当涉及到其他类中的方法调用时,这会产生严重的烦恼,即异常。
class A {
public function call(Language $lang) {
throw new Custom_Exception($error, $lang);
}
}
class Custom_Exception extends Exception {
public function __construct($error, Language $lang) {
parent::__construct($lang->vars->preError . $error);
}
}
为了能够使用静态语言属性,语言对象需要传递两次,在一些情况下可能需要三次。我正在寻找更好/更有效的方式。