Portál AbcLinuxu, 12. května 2025 07:58
A proč nemám na výstupu 'AAABBBCCC' ? Děkujiclass Foo{ public $result = false; public function __constructor(){ $this->result .= 'AAA'; $this->result .= 'BBB'; $this->result .= 'CCC'; } } $Foo = New Foo(); $foo = $Foo->result; var_dump($foo); // bool(false)
Řešení dotazu:
Dodržuj konvence velikosti písmen, nebo se z toho zblázníš.Co přesně nedodržuji? Díky
public $result = false; public function __construct() { $this->result .= 'AAA'; $this->result .= 'BBB'; $this->result .= 'CCC'; }bych raději použil
private $result = array('AAA', 'BBB', 'CCC');(seznam je skvělá struktura) nebo v původním významu
private $result; public function __construct() { $this->result = implode('', array('AAA', 'BBB', 'CCC')); }nebo ideálně
private $result; public function __construct() { $this->result = array('AAA', 'BBB', 'CCC'); } public function __toString() { return implode('', $this->result); }Rozhodně bych však proměnnou typu string neinicializoval booleovskou hodnotou "false" a 3× ji nepřepisoval stringem.
Jsou to tak silně nesémantické názvy, že by se v programech vůbec neměly objevovat.WTF? Foo, bar, quux, etc. v příkladech zastupují entity, jejichž přesný původ či význam je pro daný příklad irelevantní, o to právě jde.
$Foo = New Foo(); $foo = $Foo->result;s tímto:
$objekt = new Trida(); $hodnota = $objekt->atribut;Z toho alespoň tuším, že tazatel ví, jaký je rozdíl mezi třídou, objektem a atributem. Obecnost je zachována.
tazatel ví, jaký je rozdíl mezi třídou, objektem a atributemAsi bych byl vyhodnocen jako nevědoucí, protože třída by se jmenovala A, její instance a -- a funkce samozřejmě foo()...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.