2014-10-24 5 views
0

Что именно следующая строка кода делает:CodeIgniter - и оператор

$config = &get_config(); 

ли & оператор, проходящий по ссылке? Также есть get_config() помощник CodeIgniter? Я не мог объяснить Google.

ответ

3

Как Konrad Rudolph: https://stackoverflow.com/a/3957588/837765

Оператор & говорит PHP не копировать массив при передаче его функции . Вместо этого ссылка на массив передается в функцию , поэтому функция изменяет исходный массив вместо копии .

get_config() загружает главный config.php файл в массив и вы изменить массив возвращается непосредственно с оператором &.

Это не помощник. Взгляните сюда (чтобы найти функцию): http://www.8tiny.com/source/codeigniter/nav.html?_functions/index.html

+0

Я удалил свой ответ. Это лучше! +1 – Craig

2

Факс: & Оператор, проходящий по ссылке?

Да, он передается по ссылке, так что вы можете изменить конфигурационный массив.

Также является get_config() помощником CodeIgniter?

Нет, это основной метод CodeIgniter, который загружает конфигурационный массив, определенный в application/config/config.php.

Вы можете посмотреть исходный код here.

1

Оператор & является справочным оператором PHP.

CodeIgniter - довольно старая структура. В более старых версиях объектов PHP, которые были переданы по значению. Это означало, что PHP был довольно расточительным, когда дело доходило до таких вещей, как распределение памяти, что делало вещи медленнее, чем они должны были быть. Чтобы помешать PHP распределять память каждый раз, когда вы хотели получить доступ к объекту, вместо этого вы использовали бы ссылки.

В новых версиях PHP-объектов и массивов автоматически передаются по ссылке. Когда дело доходит до массивов, новая память выделяется только при изменении массива.

99 процентов времени использования ссылок не требуется. PHP будет оптимизировать код для вас таким образом, который имеет смысл. Вы должны использовать только ссылки, если понимаете, что они делают, и у вас есть законная причина их использования.

Функция get_config()searching for it in the source code on GitHub. здесь сказал