无法从外部函数PHP访问属性?

时间:2014-01-12 14:42:51

标签: php properties

我试图在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();
?>

有人可以帮帮我吗?谢谢!

1 个答案:

答案 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];
        }
    }