Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的抽象类冲突_Php_Oop - Fatal编程技术网

php中的抽象类冲突

php中的抽象类冲突,php,oop,Php,Oop,我有这门课: abstract class Hotel { protected $util; function __construct() { $this->util = new Utility(); } function add(Validate $data, Model_Hotel $hotel){} function delete(){} function upload_image(array $ima

我有这门课:

abstract class Hotel
{
    protected $util;

    function  __construct()
    {
        $this->util = new Utility();
    }

    function add(Validate $data, Model_Hotel $hotel){}

    function delete(){}

    function upload_image(array $imagedetails, $hotel_id){}
}
以及一个扩展它的类

class Premium extends Hotel
{
    function add(Model_Hotel $hotel)
    {
        $hotel->values;
        $hotel->save();
    }

    function upload_image(array $imagedetails, $hotel_id)
    {
        $this->util->save_image($imagedetails, $hotel_id);
    }
}
但是我得到了一个错误:

“Premium::add声明必须与Hotel::add兼容”

如您所见,我遗漏了add()方法的一个参数,这是有意的


什么OOP工具允许我继承一个参数可以更改的函数?(显然抽象类在这里不行)

您可以将$data参数设置为可选参数

class Hotel {
    function add( Model_Hotel $hotel, Validate $data = null );
}

您可以将$data参数设置为可选参数

class Hotel {
    function add( Model_Hotel $hotel, Validate $data = null );
}

这是一个严格的错误。在PHP中,您不能重载方法(这是您正在寻找的OOP范例),因此您的签名必须与方法的抽象版本相同,否则这是一个错误。

这是一个
E\u-STRICT
错误。在PHP中,您不能重载方法(这是您正在寻找的OOP范例),因此您的签名必须与方法的抽象版本相同,否则就是一个错误