2016-11-29 17 views
1

(PHP7)我有兩個班,但想訪問一個類的其他內部例如:PHP - 達到一定的語法與多類

Syntax: Property::House()->getAddress(); 

class Property 
{ 
    protected $House; 
    function Property() 
    { 
    self::$House = new House(); 
    } 

    public function House() 
    { 
    return self::$House; 
    } 
} 
class House 
{ 
    public function getAddress() 
    { 
    // code 
    } 
} 

沒有人知道做到這一點?,語法需要是相同的,但類可以根據需要進行更改

+0

什麼問題呢? –

+0

我有一種感覺,有一種更好的方法可以實現您嘗試實現的任何目標。也許你在問錯誤的問題。你想要達到什麼目的? – Andrew

+0

未捕獲的錯誤:訪問未聲明的靜態屬性Property :: $ House –

回答

0

首先,您的班級設置將給您在PHP7中的棄用錯誤。如果你想使用非靜態調用,最好使用__construct()方法代替Property()。其次,你確定你不想讓House擴展Property類而不是Property類的屬性嗎?

第三,假設你肯定你想實現這應該是什麼?

<?php 
    class Property 
    { 

     static function House() 
     { 
      return new House(); 
     } 
    } 

    class House 
    { 
     public function getAddress() 
     { 
      echo 'YAY!'; 
     } 
    } 

    Property::House()->getAddress(); 
+0

不會在我每次調用它時重置House類嗎?因爲它每次都會返回一個新的空房子類 –

+0

JezEmerys代碼只是如何設置類的一個例子。如果您想將房子保留在房產中而不是每次創建新房,請將其分配給一個變量。 $ this-> house = new House(); – Cashbee

+0

@ChrisH您是否希望每次調用靜態函數時都不要重置? – Perumal