繁体   English   中英

PHP中的抽象类冲突

[英]abstract class conflict in php

我有这个课:

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设施可以让我继承一个可以更改其参数的函数? (显然,抽象类在这里不会做)

这是E_STRICT错误。 在PHP中,您不能重载方法(这是您要查找的OOP范例),因此您的签名必须与该方法的抽象版本相同,否则会出错。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM