Probleem met niet bestaande functies
Is het mogelijk om binnen mijn object een opvang te maken voor alle niet bestaande functies?
Want als ze niet bestaan, dan wil ik ze uit een ander object halen.
Voorbeeld (let niet op evt typfouten e.d. in de code, want ik typ het even uit mijn hoofd.
class Object1
{
public function __constructor()
{
//standaard constructor
}
public function __default()
{
}
public function getAllObjects()
{
//code om gevraagde gegevens te returnen
}
}
class Object2
{
public function __constructor()
{
//standaard constructor
}
public function __default()
{
}
public function getAllSubObjects()
{
//code om gevraagde gegevens te returnen
}
}
Wanneer ik nu vanuit mijn template $object1.getAllSubObjects() aanroep, wil ik dit in class Object1 opvangen en dan de functie uit Object2 gebruiken.
Ik probeerde zelf de __default() functie aan te passen:
public function __default()
{
if!(method_exist($function))
{
$object2 = new Object2();
return $object2->$function();
}
}
Dit werkt alleen niet. Iemand een suggestie?
Tot dusver heb ik nu dit toegevoegd aan Object1
function __call($m, $a)
{
if(!function_exists($m))
{
//Hier moet ik nu het nieuwe object includen
$object2 = new Object2();
}
}
Het volgende probleem. De naam van Object2 is dynamisch. Deze zit in een variabele $prefix
Deze klasse staat in: $prefix . ".php"
Ik moet dus binnen de functie __call nog een include doen, maar dit is al halverwege het object ipv bovenaan.
function __call($m, $a)
{
if(!function_exists($m))
{
if($this->prefix!= "")
{
$url = $this->config->path . $this->prefix . "/objects/" . ucfirst($this->prefix) . "Object.php";
if(file_exists($url))
{
//require the module specific moduleObject. (NewsModule etc)
require $url;
//Build the object name
$objectModuleName = ucfirst($this->prefix)."Module";
//Initialize the Module object
$prefixModule = new $objectModuleName();
}
}
}
}