2014-01-12 47 views
1

我想访问PHP中的函数以外的属性,但它不工作?无法从外部函数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]; 
} 
} 

如果我赞同$此 - > _网址[0]的方法的getURL,然后从我的索引页调用它,我得到的URL。而如果我从_loadController方法调用它,我只是得到一个空白页。我做了var_dump($ this - > _ url)并得到NULL。 我在我的索引页的代码如下

<?php 
include 'bootstrap.php'; 
$bootstrap = new Bootstrap(); 
$app = $bootstrap->init(); 
?> 

有人能帮助我吗?谢谢!

+0

,你也没有告诉'的getURL()'。在'init'中调用这个方法或者在调用init方法之前调用 –

回答

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马托的URL设置成,在这里:在你的代码

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]; 
     } 
    } 
+0

非常感谢sergio。所以如果我想访问一个属性,我必须先调用函数? – user1475632

+0

是的,或者,你可以使用神奇的方法。有一刻,我会写 – sergio

+0

哇,你为我节省了大量的工作和头部划伤。谢谢@sergio – user1475632