哪些OOP概念在PHP中不可用

哪些OOP概念在PHP中不可用,php,oop,php-5.4,Php,Oop,Php 5.4,我在网上搜索了很多,但找不到很多人在面试问题或一般问题中提到PHP时提出的答案 哪些OOP概念在PHP中不可用 我已经多次听说和阅读PHP不是一种完全的OOP语言, 但是当我搜索它时,我无法找到OOP的哪些概念 在PHP中不可用。其他语言(通常为强类型)的某些功能是重载,这意味着您可以有两个或多个名称相同但参数不同的方法,但PHP没有 <?php Class Foo{ public function bar(){ echo 'normal bar'; }

我在网上搜索了很多,但找不到很多人在面试问题或一般问题中提到PHP时提出的答案

哪些OOP概念在PHP中不可用

我已经多次听说和阅读PHP不是一种完全的OOP语言, 但是当我搜索它时,我无法找到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();

PHP中没有用于用户定义对象类型转换的内置方法(尽管有一些解决方法)


  • 函数重载
  • 运算符重载
  • 多重继承

  • 这一个似乎是对你的问题的回答,你认为呢?我想这不是一个问题,但我对答案很感兴趣。在我学习编程和PHP的这么长时间里,我发现了一些问题(大约6个月,我知道,我是个书呆子)。尽管您可以构建一个单例类,但它基于变通方法,并且通常是一种不好的做法。另一个相关的问题是不能将类强制转换为对象实例(即
    create((Book)$bookList);
    )。但我看不到任何OO概念不能在PHP中实现。这说明您的问题是毫无意义的(@AlanMachado,试试重载,在同一个类中创建两个具有相同名称的不同参数的方法:P.So,然后?:P但无论如何,我明白了你的观点…PHP不是强类型的,所以我们最终都是“正确的”。+1为好
    <?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