我试图在PHP中访问函数外的属性,但是它不起作用?
<?php
class Bootstrap {
private $_url = null;
public function init() {
$this->_loadController();
}
public function getUrl() {
$url = (isset($_GET['url'])) ? $_GET['url'] : null;
$this->_url = explode('/', $_GET['url']);
}
public function _loadController() {
echo $this->_url[0];
}
}
如果我在方法 getUrl 中回显 $ this-&gt; _url [0] ,然后从我的索引页面调用它,我会获得该网址。如果我从 _loadController 方法调用它,我只会得到一个空白页面。我做了 var_dump($ this-&gt; _url)并得到了NULL。 我的索引页面中的代码如下:
<?php
include 'bootstrap.php';
$bootstrap = new Bootstrap();
$app = $bootstrap->init();
?>
有人可以帮帮我吗?谢谢!
答案 0 :(得分:0)
您遇到了问题,因为您没有致电getUrl()
,但在此方法中您设置了值into $_url
。将您的代码更改为:
class Bootstrap {
private $_url = null;
public function init() {
$this->_loadController();
}
public function getUrl() {
$url = (isset($_GET['url'])) ? $_GET['url'] : null;
$this->_url = explode('/', $_GET['url']);
}
public function _loadController() {
$this-> getUrl(); // here you call getUrl()
echo $this->_url[0];
}
}
或者,您可以使用magic mathod将网址设置为:
class Bootstrap {
private $_url = null;
public function init() {
$this->_loadController();
}
public function __construct() {
$url = (isset($_GET['url'])) ? $_GET['url'] : null;
$this->_url = explode('/', $_GET['url']);
}
public function _loadController() {
echo $this->_url[0];
}
}