PHP 中没有哪些 OOP 概念

Which concepts of OOP are not available in PHP

我在网上搜索了很多这个,但找不到很多人在面试问题或一般问题中谈论PHP..

的答案

Which concepts of OOP are not available in PHP?

我听过和读过很多次 PHP 不是完全面向对象的语言, 但是当我 google 它时,我无法找到 OOP 的哪些概念 在 PHP.

中不可用

其他语言(通常是强类型)有的东西是重载,这意味着你可以有两个或更多具有相同名称但参数不同的方法,但 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

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
  1. 函数重载
  2. 运算符重载
  3. 多重继承