Autor Zpráva
MzM
Profil *
Máte s tím někdo zkušenosti?
Zkusil jsem jednoduchý příklad:

class b {
var $bx;
var $cnt = 0;

function b() {
$this->bx='toto je bx';
}
function __set($name, $val) {
$this->$name = $value;
$this->cnt++;
}
}

overload('b');

$x = new b();
$x->bx = 1;
print_r($x);
$x->bx = 10;
print_r($x);

očekával jsem, že se bude cnt zvětšovat, ale podle všeho se __set() vůbec nevolá.

Něco podobného jsem zkoušel i v PHP5, tam mě ale php vyčetlo používání fce overload(), kterou vůbec nezná.

Jak to má být správně?
WanTo
Profil
Funguje __get() a __set() v PHP4?
Anonymní
Profil *
nie tieto funkcie su cisto PHP5 zalezitost
mila
Profil
__get() a __set() funguje v php 5 docela dobře. Stačí se podívat do manuálu.
Co jsem slyšel (četl) tak v php4 jsou s tím jen problémy (a funguje úplně jinak).
MzM
Profil *
mě to v php5 nechodí, aspoň ne tento příklad. Mám tam něco špatně? Nebo co? Zkuste jednoduchý příklad, který funguje. Dík.
llook
Profil
__set (a taky __get) se volá jenom pro nedefinované členské proměnné. bx je definovaná, takže se nevolá.

nie tieto funkcie su cisto PHP5 zalezitost
To není pravda. V PHP4 pro ně existuje rozšíření a od jisté verze je dokonce standardně v instalaci. Ale za prvé jsou tam menší rozdíly v použití __call() oproti PHP5 a za druhé je to pořádně zabugovaný.
mila
Profil
mě to v php5 nechodí, aspoň ne tento příklad.
Psal jsem, že v php4 funguje úplně jinak. V php 5 se třeba vůbec nevolá overload. Stačí se podívat do manuálu do kapitoly oop5.
MzM
Profil *
mila, nj, omlouvám se, tuhle větu o tom, že se to volá jenom na neexistující proměnné, jsem přehlédl. Tím pádem se to hodí tak max na hlídání toho, jestli nepřiřazuju nějakou proměnnou, kterou nechci...

btw. mám taky php4 (4.4.0) a funguje to stejne... po volání overload()
Toto téma je uzamčeno. Odpověď nelze zaslat.