[英]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.