2013-08-07 52 views
1

在此程序中,我嘗試探索PHP中的Oops概念,但這裏的東西與java有很大不同。在示例程序中,我創建了一個抽象類鳥,類鸚鵡,它擴展了鳥類和可擴展的接口。之後,我將所有上面的類和接口包含在一個php文件中。讓我們來看看代碼在PHP中創建預定義類類型的對象

<?php 
    include 'bird.php'; 
    include 'parrot.php'; 
    include 'flyable.php'; 

//creating a object 
$bird1=new parrot(); 
echo $bird1->display(); 
echo("<br/>"); 
bird $bird2=new parrot(); //shows error 

?> 

我要問的是,當我嘗試定義像鳥$ bird1 =新鸚鵡對象類的類型();在他的線我得到錯誤,但這個東西在java中完美的作品。請讓我知道如何在php中完成這件事。

+2

您不能在PHP中指定變量的類型。 – Sefus

+1

如果'parrot'或'bird'實現'flyable',那麼肯定你的包裝順序錯誤。 – Flosculus

回答

4

你真的應該顯示錯誤,但它必然是由於您使用的是在這條線的Java風格類型提示:

bird $bird2=new parrot(); 

就刪除初始bird,因爲這是無效的PHP中的語法。

PHP中使用類型提示的唯一地方是方法參數。請參閱php docs瞭解更多信息。

+0

比$ bird2對象是什麼類型的.... –

+0

嗯,它是一隻鸚鵡。您可以使用'get_class($ bird2)'來獲取對象的類名。 PHP在某些方面與Java相似,但對強制類型的要求不那麼嚴格。在Java中,您必須在傳遞時聲明所有內容的類型,但PHP的情況並非如此。即使是可以使用類型提示的情況(請參閱答案中的鏈接)也是可選的。 –

0

請讓我知道我怎麼能在php中完成這件事。

我不是這麼好與Java,但是從你的僞代碼(失敗的):

bird $bird2 = new parrot();

你表達什麼這裏是該變量$bird2是類型bird。 PHP中的變量沒有嚴格的類型,因此,在PHP中沒有這樣的概念。相反,在PHP中,變量可以是任何類型,並且可以隨時更改它。它甚至可以是未設置的。

現在這是好還是壞?那麼,對於你的問題,這是不好的,因爲你在Java中做的只是而不可能在PHP中使用

一般不好/好的東西是一個味道的問題,什麼不是,所以只要瞭解語言的差異,並儘量發揮它的最佳。

BTW在PHP $bird2既是birdparrot,一種方法來檢查這是instanceof,並通過使用Type-Hinting

相關問題