[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: isset(), array_key_exists(), __isset()
Страницы: 1, 2, 3
kaww
Цитата (Invis1ble @ 22.01.2014 - 00:00)
Я понимаю, что реализация вполне себе может зависеть от конкретных задач

Реализация обязательно будет зависеть от задачи, и это единственный критерий при реализации логики метода. Логично или нет пользователя не будет волновать т.к.
var_dump(isset($foo->bar));//true or false

не зависимо от реализации
__isset($name) {return isset($this->data[$name]);}

или
__isset($name) {return array_key_exists($name, $this->data)}
Invis1ble, класс в примере
class Container {
protected $_data = [];
public function __isset($name) {
return isset($this->_data[$name]);
}
// сеттер, геттер и пр.
}

$container = new Container;
var_dump(isset($container->foo));

в геттере вы ведь не собираетесь обращаться к несуществующим элементам $_data. Скорее всего, будет брошено исключение или вернете null (опять же в зависимости от требований). Тогда следующий код будет логичным вне зависимости от деталей реализации:
if (isset($container->foo)) {

// что-то делаем с $container->foo
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.