2015-10-20 88 views
-2

我搜索淨這個了很多,但無法找到答案,很多人在面試問題或一般問題詢問時,他們談論PHP ..其中OOP的概念不提供PHP

Which concepts of OOP are not available in PHP?

我聽說過很多很多次,PHP並不是一個完全的OOP語言,但是當我谷歌它時,我無法找到OOP 的哪些概念在PHP中不可用。

請親引導我。

感謝

+1

這一個似乎一個是[很好的答案(http://programmers.stackexchange.com/questions/78089/is-php-a-bad-object-oriented-language)你的問題,你怎麼看? [Here](http://programmers.stackexchange.com/questions/49842/php-structural-or-oop-based-language/50174#50174)是另一個。 –

+0

我認爲這不是問題,但我仍然有興趣回答 –

+0

有一些問題我可以識別這麼長時間我一直在研究編程和PHP(約6個月,我知道,我是一個noob)。儘管你可以建立一個單身人士課程,但它是基於變通辦法的,通常是不好的做法。另一個相關的觀點是你不能投一個類去實例化對象(例如'create((Book)$ bookList);')。但是我看不到任何無法在PHP中實現的OO概念。 –

回答

2

有在PHP用戶定義的對象的類型轉換沒有內置的方法(儘管有一些變通辦法)。

<?php 

class Book 
{ 
    public $title; 
    public $isbn; 
} 

class BookShelf 
{ 
    public static function create($booklist) 
    { 
     echo "Here are your books!"; 
    } 
} 

$bookList = new Book; 
BookShelf::create($bookList); // output "Here are your books!" 

$bookList = new stdClass(); 
BookShelf::create((Book)$bookList); // output a parse error of undefined variable $bookList 
2

東西,這人languagues(強一般類型)已經是超載,這意味着你可以有兩種以上的方法具有相同的名稱,但diferents ARGS,但PHP沒有它。

<?php 

Class Foo{ 
    public function bar(){ 
     echo 'normal bar'; 
    } 

    public function bar($arg){ 
     echo 'special bar with arg '. $arg; 
    } 
} 

$f = new Foo(); 

你得到這個錯誤:Fatal error: Cannot redeclare Foo::bar() in

+0

所以,[它是什麼](http://php.net/manual/en/language.oop5.overloading .php),然後?:P但無論如何,我已經明白了你的觀點...... PHP不是很強類型的,所以我們倆最終都是「正確的」。 –