2017-09-19 36 views
1

我在Stackflow上搜索了很多解決方案,但是我沒有把它修復。它的簡單我有一個類庫,我想存儲書籍對象,並顯示它們。我的代碼很簡單,但我沒有明白。我收到此錯誤: 未定義的變量:書籍如何在php中使用set函數將對象存儲在數組中?

 class Library{ 

      var $books = array(); 

      function addBook($bok){ 
       $books[] = $bok; 
      } 

      function displayBooks(){ 
       foreach($books as $b){ 
        $b->display(); 
       } 
      } 
     } 

     class Book{ 
      var $title; 
      function __construct($name){ 
       $this->title = $name; 
      } 

      function display(){ 
       echo $this->title; 
      } 
     } 


     $lib = new Library(); 
     $lib->addBook(new Book("Test Title")); 
     $lib->displayBooks(); 
+5

,變量應'這 - $> books'和不'$ books' – Calimero

+0

另外,請注意被稱爲,即'var'不因爲推薦PHP 5.0的發佈(即2006年左右)......你可能需要獲得一個更新的教程/書籍。 –

+0

你的意思是?我不能寫var ist我測試過的語法的一部分?我可以使用什麼呢? –

回答

0

需要與$this引用類的數組。下面的例子。

function addBook($book) { 
    $this->books[] = $book; 
} 

function displayBooks() { 
    foreach($this->books as $book){ 
     $book->display(); 
    } 
} 
2

$books是圖書館的實例變量,但訪問它,你應該寫$this->books,不$books。 (正如Calimero在該問題下提出的評論)

此外,始終明確使用可見性(公共,私有,受保護)是一種很好的做法。

實施例:

class Library { 
    private $books = []; 
    public function addBook($book){ 
    $this->books[] = $book; 
    } 

    public function displayBooks(){ 
    foreach($this->books as $b){ 
     $b->display(); 
    } 
    } 
} 
從類內
相關問題