Articles of reference

& __ get () снова. Основное разочарование

Хорошо, я очень расстроен, потому что я думал, что я решил эту проблему, или успешно это сделал раньше. Быстрое предварительное: PHP 5.3.6. Сообщение об ошибках сработало до 11. ( -1 самом деле, в будущем безопасно, все ошибки / уведомления ) У меня есть класс, он агрегирует параметры запроса. Для хихиканья здесь урезанная версия: class My_Request{ […]

Возвращать null по ссылке через __get ()

Быстрые спецификации: PHP 5.3 error_reporting(-1) // the highest Я использую __get() путем обращения к магическому доступу к произвольно глубоким элементам массива в объекте. Быстрый пример: public function &__get($key){ return isset($this->_data[$key]) ? $this->_data[$key] : null; } Это не работает, когда $key не задан, он пытается вернуть значение null по ссылке, что, конечно, бросает. Only variable references […]

ArrayAccess в PHP – назначение смещения по ссылке

Во-первых, цитата из руководства ole 'на ArrayAccess::offsetSet() : Эта функция не вызывается в назначениях по ссылке и иным образом косвенным изменениям в размерах массива, перегруженных с помощью ArrayAccess (косвенные в том смысле, что они сделаны не путем изменения измерения напрямую, а путем изменения подразмера или суб-свойства или назначения размера массива по ссылке на другую переменную). […]

Функция статической переменной внутри не может содержать ссылку на singleton

Я заметил странное поведение с синглотами в PHP, нет лучшего способа объяснить это, но с примером. Предположим, у меня есть следующий одноэлементный класс: class Singleton { protected function __construct() { // Deny direct instantion! } protected function __clone() { // Deny cloning! } public static function &Instance() { static $Instance; echo 'Class Echo'.PHP_EOL; var_dump($Instance); if […]

Неожиданное наблюдение: var_dump () массива помещает ссылки на элементы … с каких пор?

Я просто запускал несколько простых отладочных тестов против массивов и замечал, что когда я делаю var_dump () массива, вывод помещает любой элемент в массив, на который ссылается другая переменная. В качестве простого эксперимента я выполнил следующий код: $array = range(1,4); var_dump($array); echo '<br />'; foreach($array as &$value) { } var_dump($array); echo '<br />'; $value2 = […]

Почему функция call_user_func () PHP не поддерживает передачу по ссылке?

Почему функции обработки функций, такие как call_user_func() поддерживают передачу параметров по ссылке? В документах написаны такие простые вещи, как «Обратите внимание, что параметры для call_user_func () не передаются по ссылке». Я предполагаю, что у разработчиков PHP была какая-то причина для отключения этой возможности в этом случае. Были ли они связаны с техническим ограничением? Это был […]

В PHP может кто-то объяснить клонирование против ссылки указателя?

Для начала я понимаю программирование и объекты, но следующее не имеет большого смысла для меня в PHP. В PHP мы используем оператор & для получения ссылки на переменную. Я понимаю ссылку как способ ссылаться на ту же «вещь» с другой переменной. Если я скажу, например $b = 1; $a =& $b; $a = 3; echo […]

Предварительная инкрементация против постинкрементации

Насколько они разные? Вот что я думаю, но я не уверен … Если вы используете pre-incrementation, например, в цикле for с ++ j, то вы в основном говорите: «Сделайте копию значения j для использования в цикле, затем увеличьте j, а затем выполните инструкции в петля с копией j. " Если вы используете пост-инкрементирование в том […]