[英]PHP Magic Methods - __get and __set not working in php MVC framework serviceFactory
I created an instance of serviceFactory in index.php which simply gets/stores (private) variables in itself. 我在index.php中创建了serviceFactory的实例,该实例本身简单地获取/存储(私有)变量。 But, the __get and __set magic methods for some reason are not working.
但是,出于某种原因,__ get和__set魔术方法无法正常工作。 Doing a var_dump($serviceFactory->language) in the index returns false.
在索引中执行var_dump($ serviceFactory-> language)将返回false。 When I create an instance of serviceFactory, I pass the $router instance to the $serviceFactory constructor.
创建serviceFactory的实例时,会将$ router实例传递给$ serviceFactory构造函数。 The router is working (otherwise it would not display controller or view), but for some reason, when I try to __get the language from the $serviceFactory instance, it returns false and I'm confused as to why.
路由器正在工作(否则它将不会显示控制器或视图),但是由于某些原因,当我尝试从$ serviceFactory实例__get语言时,它返回false,我对原因感到困惑。
index.php index.php
//create an instance of serviceFactory
$serviceFactory = new serviceFactory($router);
var_dump($serviceFactory->language);
serviceFactory serviceFactory
class serviceFactory {
private $data = array();
public function __construct($router) { //store the router data
$data['language'] = $router->getKey('language');
$data['class'] = $router->getKey('className');
$data['method'] = $router->getKey('method');
$data['arg'] = $router->getKey('arg');
}
public function __set($key, $val) {
$this->data[$key] = $val;
}
public function __get($key) {
if(isset($this->data[$key])) {
return $this->data[$key];
}
else {
return false;
}
}
}
Simple, you've made a common mistake in working with instances: 很简单,您在使用实例时犯了一个常见错误:
$data['language'] = $router->getKey('language'); $data['class'] = $router->getKey('className'); $data['method'] = $router->getKey('method'); $data['arg'] = $router->getKey('arg');
should all be 应该都是
$this->data['language'] = $router->getKey('language'); $this->data['class'] = $router->getKey('className'); $this->data['method'] = $router->getKey('method'); $this->data['arg'] = $router->getKey('arg');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.