php soyut sınıf çatışması

2 Cevap php

Ben bu sınıf vardır:

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){}
}

ve onu genişleten bir sınıf

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);
    }
}

ama sonra ben bir hata alıyorum:

"Premium beyanı eklemek :: Otel ile uyumlu olmalıdır :: add"

Gördüğünüz gibi, ben kasıtlı olarak) yöntemi (eklenti için bir parametre bıraktı

ne OOP tesis bana olan parametreleri ben değiştirebilirim bir işlev miras için izin verecek? (Açıkçası soyut bir sınıf burada yapmayacağım)

2 Cevap

Bir E_STRICT hatası var. PHP Eğer yöntemleri (yani aradığınız OOP paradigma) aşırı olamaz, bu nedenle imza yönteminin soyut sürümüne özdeş olmalıdır, ya da başka bir hata var.

Sen $ veri parametre isteğe yapabilir

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