Portál AbcLinuxu, 5. listopadu 2025 17:52
class 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)
A proč nemám na výstupu 'AAABBBCCC' ? Děkuji
Ř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.