Zdravím, zaúčam sa do tried a narazil som na jeden problém.
Chcem spraviť volanie tried pomocou $Trieda->subTrieda->funnkcia(); kvôli prehladnosti. Nejak som to docielil, ale narazil som na menší problém. Síce som to vyriešil, ale neviem či nejak efektívne a preto sa pýtam tu.
Takže mám.
Kód:
class Main{
function __construct(){
$this->Sub1 = new Sub1;
$this->Sub2 = new Sub2;
//moje riesenie
$this->Sub2->Sub1 = &$this->Sub1;
}
}
class Sub1{
var $Result = '';
function Result($A){
$this->Result .= $A;
}
}
class Sub2{
function setResult($A){
$this->Sub1->Result($A);
}
}
$M = new Main;
$M->Sub2->SetResult('asd');
$M->Sub2->SetResult('fgh');
var_dump($M);
Vráti
Kód:
object(Main)#1 (2) {
["Sub1"]=>
&object(Sub1)#2 (1) {
["Result"]=>
string(6) "asdfgh"
}
["Sub2"]=>
object(Sub2)#3 (1) {
["Sub1"]=>
&object(Sub1)#2 (1) {
["Result"]=>
string(6) "asdfgh"
}
}
}
Nie je to blbosť, alebo to nejak zbytočne nezaťažuje chod? Obvzlášť, keď to bude rozsiahlejšie.
Tu sa dostávame k pointe. Dá sa tá funkcia Result() v Sub2->SetResult() volať aj nejak inak?
Niečo v zmysle
parent::Sub1->Result('asd');
Pretože ak volám funkciu staticky ( Sub1::Result(2); ), tak prídá premennú Result do Sub2, ale ja chcem aby to ostalo v Sub1.
Dúfam, že som sa nevyjadril jak mešuge, lebo už aj sám som z toho popletený
ďakujem