moijen alle,
ich habe mir gerade die featurelist von php5 durchgelesen und bin dabei auf eine für mich interessante stelle gestossen: objektrefenzen aus funktionen zurückgeben http://php5.de/zend-engine-2.php.
dort steht, dass das neu wäre. jetzt habe ich das mal in 4 probiert und es funktioniert auch. ist an dem beispiel jetzt was dran, was 'gefährlich' ist (irgendwelche objekte, die zu früh gelöscht werden könnten)?
danke für eure hilfe,
andi
<?php
/*---------------------------
parent class for extending
---------------------------*/
class parentClass{
function parentClass(){
out::o("constructing class parentClass");
}
function insideParent($string = ""){
out::o("calling parentClass".$string);
}
}
/*---------------------------
child classes
---------------------------*/
class bum extends parentClass {
function bum(){
parent::parentClass();
out::o("constructing class bum");
}
}
class bam extends parentClass {
function bam(){
out::o("constructing class bam");
}
}
/*---------------------------
class instantiating the child classes, returns reference to object
---------------------------*/
class constructionClass{
function constructionClass(){
out::o("constructing class constructionClass");
}
function caller($string){
switch ($string){
case "bum":
$bumInside = &new bum();
return $bumInside;
break;
case "bam":
$bamInside = &new bam();
return $bamInside;
break;
default:
out::o("ERROR: no valid parameter");
break;
}
}
}
//***************************
/*---------------------------
main
---------------------------*/
$cc = &new constructionClass();
out::o("---");
$bum = &$cc->caller("bum");
$bam = &$cc->caller("bam");
out::o("---");
$bum->insideParent();
$bam->insideParent();
out::o("---");
$bumStatic = &caller("bum");
$bamStatic = &caller("bam");
$bumStatic->insideParent();
$bamStatic->insideParent();
//END main
//***************************
/*---------------------------
static function, same as in constructionClass
---------------------------*/
function caller($string){
switch ($string){
case "bum":
$bumInside = &new bum();
return $bumInside;
break;
case "bam":
$bamInside = &new bam();
return $bamInside;
break;
default:
out::o("ERROR: no valid parameter");
break;
}
}
/*---------------------------
function for output
---------------------------*/
class out{
function o($out){
echo $out."<br />";
}
}
?>