Как вернуть значение null внутри функции/метода, если свойство в классе не найдено?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как вернуть значение null внутри функции/метода, если свойство в классе не найдено?

Сообщение Anonymous »

Я использую stdClass для преобразования массива в объект

function array_to_object($array)
{
if(!is_array($array)) {
return $array;
}

$object = new stdClass();
foreach($array as $key => $value)
{
$key = (string) $key ;
$object->$key = is_array($value) ? array_to_object($value) : $value;
}

return $object;
}

$type = array(
"category" => "admin",
"person" => "unique"
);

$type = array_to_object($type);

var_dump($type->category); // string(5) "admin"


и, конечно же, ошибка, когда я хочу получить свойство, которое изначально не установлено в массиве,

var_dump($type->image);


сообщение об ошибке,

Notice: Undefined property: stdClass::$image in C:\wamp\www\test\2012\php\array_to_object.php on line 52
NULL


Интересно, могу ли я заставить функцию возвращать значение null, если свойство не найдено?

var_dump($type->image); //NULL


РЕДАКТИРОВАТЬ:

Решил превратить эту функцию выше в класс, но все еще не могу заставить __get() работать правильно,

class objectify
{
public function __get($name)
{
if (isset($this->$name) === true){
return $this->$name;
} else {
return null;
}
}

public function array_to_object($array)
{
if(!is_array($array)) {
return $array;
}

$object = self::__get($name);
foreach($array as $key => $value)
{
$key = (string) $key ;
$object->$key = is_array($value) ? self::array_to_object($value) : $value;
}
return $object;
}
}

$object = new objectify();

$type = array(
"category" => "admin",
"person" => "unique"
);

$type = $object->array_to_object($type);
var_dump($type->category);
var_dump($type->image);


сообщение об ошибке,

Notice: Undefined variable: name in C:\wamp\www\test\2012\php\array_to_object.php on line 85
string(5) "admin"
Notice: Undefined property: stdClass::$image in C:\wamp\www\test\2012\php\array_to_object.php on line 107
NULL


Я думаю, что именно в этой строке и находится ошибка, но я не знаю, что с ней делать...

$object = self::__get($name);


Подробнее здесь: https://stackoverflow.com/questions/104 ... ass-is-not
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»