Конвертировать массив в объект - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть собственный класс Array. Как это:

myArray::fetch('site.meta.keywords');  // return Array(...)

В то же время, как я могу это сделать?

myArray::fetch('site.meta.keywords');                // return Array(...)
myArray::fetch('site.meta.keywords')->as_object();   // return Object{...}

Возможно ли это в PHP?

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

Вы не можете, потому что массив не имеет метода as_object.Я хотел бы создать отдельный метод fetchAsObject в вашем классе массива или добавить необязательный параметр asObject (логический, по умолчанию false) в существующий метод выборки.

0 голосов
/ 01 февраля 2011

Если в первом случае вы возвращаете необработанный массив PHP, это невозможно . Вы можете сделать это так:

public static function fetch($key, $as_object = false) 
{
    //in $data you have your array
    return ($as_object) ? (object)$data : $data; 
}

myArray::fetch('site.meta.keywords');  //return array
myArray::fetch('site.meta.keywords', true);  //return object

Или просто так:

$dataAsArray = myArray::fetch('site.meta.keywords');
$dataAsObject = (object)myArray::fetch('site.meta.keywords');
0 голосов
/ 01 февраля 2011

Вы должны взглянуть на ArrayObject , он ведет себя так же, как и любой другой массив, и вы можете расширить его (или ваш класс?).

В вашем случае я бы вернулсячто-то вроде MyArrayObject (ваш класс расширяет ArrayObject с помощью метода as_object () и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...