Объект в методе другого класса. Область видимости

fixxxer

К.О.
Партнер клуба
В тех случаях, когда null является валидным значением. Это важно не так редко, как кажется :)

Очевидный пример - любая объектная обертка над массивом, типа ArrayObject.

Менее очевидный - найди баг в реализации Phemto::instantiateParameter. :)
 

Вурдалак

Продвинутый новичок
fixxxer, ну так это то же самое: зачем тебе отличать $data->set('foo', null) от отсутствия этой строки?
 

fixxxer

К.О.
Партнер клуба
да можно и 1 от 2 не отличать, я не против, только без меня :)

у меня обычно такая логика, что null это null, а нет значения - это нет значения.
 

Absinthe

жожо
fixxxer вот в конце не допишу "это был сарказм" - и уже никто не понимает :(
 

Вурдалак

Продвинутый новичок
Вурдалак а зачем отличать false от 0 или "0" от null??
Это вполне валидные значения, а NULL во всех языках в принципе означает отсутствие значения. Я не отличаю отсутствие значения от отсутствия значения.
 

Absinthe

жожо
Это вполне валидные значения, а NULL во всех языках в принципе означает отсутствие значения. Я не отличаю отсутствие значения от отсутствия значения.
Ну здрасьте. В большинстве языков нет понятия "нет значения". Вот в JS такое понятие есть, и null там совсем не то же самое, что и undefined.
 

Вурдалак

Продвинутый новичок
Absinthe, okay, я ориентируюсь на Java и мне нравится такая логика. Я не вижу смысла различать эти два случая. Либо объект есть, либо null. Всё. Что угодно вполне неплохо переписывается на логику, не требующую различия этих двух ситуаций.

Просто интересно, серьёзно: зачем делать это различие? Вот и fixxxer не и ответил.
 

Absinthe

жожо
Absinthe, okay, я ориентируюсь на Java и мне нравится такая логика. Я не вижу смысла различать эти два случая.
Не забывай, что в PHP у нас динамическая типизация. В добавок еще и слабая. Сравнение некорректно.

Пример: запись с полями. Если назначено полю null - пишем в базу NULL. Если ничего не назначено - база запишет значение по умолчанию.
 

fixxxer

К.О.
Партнер клуба
Вурдалак

я считаю, что отсутствие значения - это логическая ошибка, всё должно быть определено. Это помогает избежать множества багов. Простой пример - опечатка в ключе. (У меня в таких случаях всегда будет exception).

А null - это null, может иметь разные смыслы: использовать значение по умолчанию, значение неприменимо в данном контексте, и т.п. Кстати, навязываемый php-функциями false для "отсутствия результата" считаю неприемлемым - false это булевое значение, которое следует использовать только в контексте true/false. Всегда в таких случаях использую null.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
А зачем вообще проверять наличие ключа в массиве? Никто из советующих array_key_exists не может объяснить зачем делать различие между NULL и отсутствием ключа.
я могу и пользуюсь. у меня null - значение, имеющее смысл по логике приложения


Ладно, ребят, пятница и я откровенно троллю.
я не дочитал топик :)
 

Apostol

Новичок
PHP:
class User {
	protected $vars = array();

	public function login(){
		$this->vars['login'] = 'pav';
		$this->vars['pass'] = 'putinpidor';
	}

	public function __get($key){
		return @$this->vars[$key];
	}
}

$user = new User();
echo $user->login; //pav
echo $user->pass; //putinpidor
Так в том то и дело, что потом приходится в методах других глассов предварительно объявлять global $user;, чего я и хочу избежать
 

fixxxer

К.О.
Партнер клуба
там ссылочку на первой странице AmdY дал, читать пробовал? :)
 
Сверху