Tôi đang thử một công thức về cách lưu trữ tài nguyên chuỗi trong PHP, nhưng tôi dường như không thể làm cho nó hoạt động. Tôi là một chút không chắc chắn về cách thức các chức năng __get hoạt động liên quan đến mảng và các đối tượng.__get tài nguyên trong PHP "Không thể sử dụng đối tượng kiểu stdClass như mảng"
Thông báo lỗi: "Fatal error: Không thể sử dụng đối tượng của loại stdClass như mảng trong /var/www/html/workspace/srclistv2/Resource.php trên dòng 34"
Tôi đang làm gì sai?
/**
* 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;
}
}
Dưới đây là các tập tin tài nguyên tên QueryGenerator.res.php:
$res = array(
'query' => array(
'print' => 'select * from source prints',
'web' => 'select * from source web',
)
);
Và đây là nơi tôi đang cố gắng để gọi nó là:
$resource = new Resource("QueryGenerator.res");
$query = $resource->query->print;
Tôi nghĩ việc này trực tiếp $ this-> lưu trữ -> $ root –
@ElzoValugi Chắc chắn, nó làm. Tôi sử dụng điều này bởi vì tôi _think_ nó dễ hiểu hơn đối với các lập trình viên "không phải php". – Leri
@PLB: Sử dụng hàm này trả về NULL (từ phần "khác" của séc). Vẫn nhận được với "$ resource-> query-> print" như thể nó là nơi một vô hướng với một chuỗi. –