2012-05-26 40 views
0

我有一个叫DatabaseController类,我已经建立了像这样:PHP传递价值的一类

<?php 

class DBController { 

    public $dbName; 

    function _controller($passedDBName) { 
     $dbName = $passedDBName; 
    } 

    function dbConnect() { 
     print $this->$dbName; 
    } 



} //end of class  
?> 

和我打电话这样说:

<?php 

    //make new database connection 
    $dbManager = new DBController("somevalue"); 
    $dbManager->dbConnect(); 


?> 

,但我不断收到此错误:

<b>Fatal error</b>: Cannot access empty property in 

我在做什么错?

感谢

回答

3

在构造函数中,$dbName = $passedDBName;应该$this->dbName = $passedDBName;

更新:

  1. $this->$dbName应该是$this->dbName
  2. _controller()应该是__construct()
+0

这是正确的,但'dbConnect()'也包含错误。 – ThiefMaster

+0

错误是因为dbConnect()尝试访问单位变量。该变量是单位化的,因为在构造函数中输入'$ dbName = $ passedDBName;',这应该是'$ this-> dbName = $ passedDBName;'。 – flowfree

+0

这是不正确的。 '$ this - > $ dbName'访问存储在'$ dbName'中的名称的字段。而且由于没有设置'$ dbName',它会尝试访问一个空名称的字段 - 并且**会导致致命错误。读取未定义的字段只会导致通知。 - 见http://codepad.org/Zu6yQuno – ThiefMaster

3

使用$this->dbName - 否则您尝试访问名称存储在$dbName中的字段。您还需要修复您的构造器,以将其分配给$this->dbName而不是$dbName

class DBController { 
    public $dbName; 
    function _controller($passedDBName) { 
     $this->dbName = $passedDBName; 
    } 
    function dbConnect() { 
     print $this->dbName; 
    } 
} 
+1

究竟谁在没有留下评论的情况下下决定正确答案? – ThiefMaster

+0

感谢您的回答和明确的解释。 – PruitIgoe

+0

不客气。延迟15分钟后请接受答案。而且,由于您对PHP看起来颇为新颖,因此考虑查看PHP文档 - 这非常好。 – ThiefMaster