<?php class A { public function Trzy() { return 3; } public function Pisz($par = $this->Trzy()) { } } $a = new A(); $a->Pisz(); ?>
w linii 8 daje błąd składni. Ten $this najwyrazniej w tym miejscu nie ma prawa wystąpić.
Chcę by domyślna wartość parametru metody była liczona przez inną metodę obietu. Problem mogę obejść konstrukjcją:
<?php class A { public function Trzy() { return 3; } public function Pisz($par = 'sztuczny') { if($par == 'sztuczny') $par = $this->Trzy(); } } $a = new A(); $a->Pisz(); ?>
Tylko, że to już jest łatanie problemu zaciemniajace kod.
Pytania:
1) czy isnieje eleganckie rozwiązanie, tzn. użycie jako argumentu domyslnego tego co chcę. Może jakieś specjalne słówko kluczowe?
2) jeśli odpowiedz na 1) jest negatywna, to czemu? Tzn. czy stoją za tym jakieś głebokie podstawy działania PHP? Jakoś nie widzę, skoro obejście problemu jest automatyczne. Chyba, ze dogmat o ograniczeniu $this do ciała metody.