Ich versuche, ein Rezept aus, wie String-Ressourcen in PHP zu speichern, aber ich kann nicht scheinen, um zu arbeiten. Ich bin ein wenig unsicher, wie die __get-Funktion in Bezug auf Arrays und Objekte funktioniert.__get Ressource in PHP „Kann nicht Objekt des Typs stdClass als Array verwenden“
Fehlermeldung: "Fatal error: Kann nicht Objekt des Typs stdClass als Array in /var/www/html/workspace/srclistv2/Resource.php auf Zeile 34"
Was mache ich falsch?
/**
* Stores the res file-array to be used as a partt of the resource object.
*/
class Resource
{
var $resource;
var $storage = array();
public function __construct($resource)
{
$this->resource = $resource;
$this->load();
}
private function load()
{
$location = $this->resource . '.php';
if(file_exists($location))
{
require_once $location;
if(isset($res))
{
$this->storage = (object)$res;
unset($res);
}
}
}
public function __get($root)
{
return isset($this->storage[$root]) ? $this->storage[$root] : null;
}
}
Hier ist die Ressource-Datei QueryGenerator.res.php genannt:
$res = array(
'query' => array(
'print' => 'select * from source prints',
'web' => 'select * from source web',
)
);
Und hier ist der Ort, ich versuche, es zu nennen:
$resource = new Resource("QueryGenerator.res");
$query = $resource->query->print;
Ich denke, das funktioniert direkt $ this-> Lagerung -> $ root –
@ElzoValugi Sicher, es tut. Ich benutze das, weil ich _think_ es für "Nicht-PHP" -Programmierer verständlicher ist. – Leri
@PLB: Mit dieser Funktion wird NULL zurückgegeben (aus dem "else" -Teil der Prüfung). Immer noch mit "$ resource-> query-> print" als ob es sich um einen Skalar mit einer Zeichenkette handeln würde. –