Autor Zpráva
Shadowek
Profil
Promiňte za nadpis, ale bohužel mě nenapadlo jak tento problém lépe popsat.
Mám objekt:
class command{
public $name;
public $description;
public $manual;
//...
public function odpoved(){
//obsah funkce
}
}

Potřeboval bych funkci odpoved upravit unikátně pro každou jeho instanci. Něco jak nastavuji hodnotu proměnné, ale zde by šlo o funkci. Abych mohl prostě měnit co daná funkce udělá. Šlo by to nějak udělat?
Nox
Profil
co to má konkrétně za účel? průběh a výsledek funkce lze měnit jejími parametry ( opoved(argument, argument...argument) ) a vlastnostmi objektu ($this->property)

jinak šlo by volat teoreticky pracovat s funkcí ( http://cz.php.net/manual/en/functions.anonymous.php ) nebo názvem funkce ( http://cz.php.net/manual/en/functions.variable-functions.php ), ale nevim jestli není u objektů nějaký problém, mám pocit že se to někde řešilo, ale nevybavuji si podle čeho hledat
Shadowek
Profil
No já jsem chtěl mít array instancí objektů command, kterou bych procházel foreachem a pokud by určitý zadaný string prošel regulárem v proměnné v instanci objektu provedla by se funkce odpoved() co je také uvnitř toho objektu, ale potřeboval bych aby u každé instance to mohlo dělat něco jiného.
Nox
Profil
doufal sem v o něco konkrétnější, ale viděl bych to něco jako

abstract class command{
  public $name;
  public $description;
  public $manual;

  abstract public function reponse(); // proč název a vlastnosti anglicky a metoda česky?
}
class commandUpdateItem extends command{
  public function response(){ ... }
}
 (...) atp.
class commandHandler{
  protected static $commands;

  public static function registerCommand(){...}
  public static function execute($string)
}
Shadowek
Profil
Protože sem si v tu chvíli nevzpomněl jak se to řekne :D. No a tak jsem to právě nechtěl. Chtěl jsem upravit funkci v jednotlivé instanci a né vytvořením dalšího objektu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0