Portál AbcLinuxu, 10. května 2025 19:44
Ahoj, je mozne prepsat funkci? Něco jako bych si vytvořit instanci třídy Kniha, a chtěl aby mi vždy vracela jako název nastavený text. Nějak podobne jako to lze třeba v javě?
$kniha = new Kniha() {
public function getNazev() {
return "novy nazev";
}
}
a potom vždy když by se zavolalo: $kniha->getNazev() dostal bych "novy nazev". Je neco takoveho v php mozne? a jak na to? díky.
class Kniha { public function getNazev() { return "novy nazev"; } } $kniha = new Kniha(); echo $kniha->getNazev();Predpokladam ale, ze ten nazev tam chces strkat zvenku:
class Kniha { public function __construct($nazev) { $this->nazev = $nazev; } private $nazev; public function getNazev() { return $this->nazev; } } $kniha = new Kniha("novy nazev"); echo $kniha->getNazev();
<?php class Kniha{ private $name; public function __construct($name) { $this->name = $name; } public function getName(){ return $this->name; } } $kniha = new Kniha("Alenka v říši divů"); echo $kniha->getName();
<?php date_default_timezone_set('Europe/Prague'); class Kniha{ private $name; public function __construct($name) { $this->name = $name; } public function __call($method, $args){ if(isset($this->$method)){ $func = $this->$method; $func($args); } } public function getName(){ return $this->name; } } $kniha = new Kniha("Alenka v říši divů"); echo $kniha->getName(),"Ale je to zjednodušené a může to mít nějaké vedlejší efekty viz __call.
\n"; $kniha->prnOnTheFly = function(){ echo "Alenka flying"; }; $kniha->prnOnTheFly(); echo "
\n"; $kniha2 = new Kniha("Alenka v říši divů 1½"); $kniha2->prnOnTheFly();//nic se nestane echo "
\n";
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.