Cytat(HgReed @ 26.02.2012, 15:14:25 )

Właśnie mi chodzi o to, żeby ta funkcja X była w abstract'ie - musi być wymagana.
Chyba zostaje mi tylko wklepanie array $array = array() jako parametr i sprawdzanie zawartości :/
No to tak jak ci napisałem robisz function coś ( $param1=null, $param2=null) w implementacji, a w abstrakcie robisz
abstract function coś (); i działa.
Choc nie jest to rozwiazanie zbyt eleganckie.
Jesli chcesz rozwiazania poprawnego to mozesz jeszcze utworzyc valueObject - tak jak jest np w eventach javascriptu i C#.
nigdy nie ma event handlerów
function eventHandler(eventID, eventName,x, y, .....)
zawsze jest
function eventHandler(eventArgs).
class PrzodekParameterSet
{
protected $eventName;
public function getEventName() { return $this->eventName; }
public function setEventName($value) { $this->eventName = $value; }
public function __construct($eventName) { $this->setEventName($eventName); }
}
abstract class Przodek
{
abstract public function jakasMetoda(PrzodekParameterSet $parameters);
}
class Dziecko extends Przodek
{
public function jakasMetoda(PrzodekParameterSet $parameters) { /* tresc */ }
}
class DrugieDzieckoParameterSet extends PrzodekParameterSet
{
protected $dodatkowyParam;
public function getDodatkowyParam() { return $this->dodatkowyParam; }
public function setDodatkowyParam($value) { $this->dodatkowyParam = $value;}
public function __construct($eventName, $dodatkowyParam)
{
parent::__construct($eventName);
$this->setDodatkowyParam($dodatkowyParam);
}
}
class DrugieDziecko extends Przodek
{
public function jakasMetoda(DrugieDzieckoParameters $parameters)
{
}
}
$dziecko = new Dziecko();
$dziecko->jakasMetoda(new PrzodekParameterSet("nowy_event"));
$drugieDziecko = new DrugieDziecko;
$drugieDziecko->jakasMetoda(new DrugieDzieckoParameterSet("nowy_event", "dodatkowy_param"));
tez powinno chodzic.
Tylko dla mnie definiowanie konstruktora jako abstrakcyjnego jest z deka pozbawione sensu - kazda klasa ma swoj konstruktor (pusty),
i konstruktory w klasach dziedziczacych moga miec rozna liste parametrów.
Natomiast zwykle metody zefiniowane jako abstrakcyjne musza miec taka sama liste parametrów i mozesz to zastosowac.
Nie stosuj tablic (zamiast nich stosuj valueObjecty - to jedna z dobrych praktyk) - po paru miesiacach moze byc problem z odgadnieciem jak ta tablica powinna wygladac. No i w zasadzie nie masz sposobu by wymusic jakis parametr, jezeli jest obowiazkowy.
ja odkad pracuje z php nie mialem powodu by stosowac takie dziwaczne konstrukcje, wiec moze po prostu projekt twoich klas jest blędny i dlatego wymusza takie rozwiazania? moze jego poprawienie rozwiaze problem w prostszy sposob tak jak pisze crozin