sa ovoga linka:
http://au.php.net/manual/en/language.oop5.overloading.php
Prosto ne mogu da shvatim sta se tamo desva. iako volim __set i __get ( Navikao u .NET-u)
Isto ova linija umesto da vrati true uvek mi vraca false ???
var_dump(isset($foo->a)); //true
Dok overloading sa __call sam shvatio tj znam kako da iskoristim izvan classe
Ali kako da preklopim metode unutar classe ???
Recimo :
<?
// mozda sad ovo nije nesto a nije toliko bitno
// bitno mi je kako da preklopim metode unutar classe
class Osoba {
private $_name;
//Konstruktor
public function Osoba($name)
{
$this->_name = $name;
}
// Ovaj sam nacin uvek koristio
private function GetName()
{
return $this->_name;
}
//Ovde bi trebalo da ide nesto tipa SetName() ali nikad nisam koristio
//private function SetName($name)
//{
// samo onda bi se metoda GetName morala menjati
// $this->_name = $name;
//}
public function Ime(){
echo "Vase ime je ".$this->GetName()."<br>";
}
// kako ovde preklopiti sa ime($ime)
// znaci da bude isto ime metode samo razliciti argumenti
// da ne bude ovako ime2 nego ime...
public function Ime2($ime){
$this->_name = $ime;
echo "Vase novo ime je ".$this->GetName()."<br>";
}
}
$foo = new Osoba("Petar");
$foo->Ime();
$foo->Ime2("Jovan");
// rezultat je:
//Vase ime je Petar
//Vase novo ime je Jovan
class OsobaVirtual
{
private $x = array();
function __call($m, $a)
{
print "Virtualna metoda $m je pozvana sa broje argumenata = ".count($a)."<br>";
$this->_x = $a;
return $this->_x;
}
}
$foo = new OsobaVirtual();
echo"<pre>";
$a = $foo->test("Petar");
print_r($a);
$b = $foo->test("Petar","Petrovic");
print_r($b);
/* Rezultat je:
Virtualna metoda test je pozvana sa broje argumenata = 1
Array
(
[0] => Petar
)
Virtualna metoda test je pozvana sa broje argumenata = 2
Array
(
[0] => Petar
[1] => Petrovic
)
*/
?>
Da li je neko radio sa _set i _get i overload ??
http://au.php.net/manual/en/language.oop5.overloading.php
I jel moze neko da proveri da li vama ova linja vraca false ili true ??
var_dump(isset($foo->a)); //true
[Ovu poruku je menjao sale83 dana 19.07.2006. u 08:35 GMT+1]