Цитата (Юрий Шу @ 21.01.2009 - 17:14) |
1) Почему в случае, когда параметры функции передаются по ссылке массив не возвращается в определении функции?? |
Если объект передается в функцию по ссылке, это значит мы функции "передаем" адрес ячейки где находится сам объект, и функция работает (изменяет) непосредственно с самим объектом и следовательно функции не нужно возвращать измененный объект. Например так работает функция sort(). Например в языке Си, нельзя передать в функцию массив, это можно сделать только по ссылке.
Если функция возвращает объект, механизм работы другой. Мы указываем функцию наш объект. Функция его копирует и создает его полную точную копию, и потом работает только с этой копией, которая кстати существует только пока работает сама функция (исключение - static) и так как сам объект не изменяется, нужно вернуть результат работы посредством return.
Цитата (Юрий Шу @ 21.01.2009 - 17:14) |
3) Я так понял функцию и в первом и во втором случае можно вызывать и до и после определения? |
В PHP3 функции должны были быть определены прежде, чем они будут использованы. Начиная с PHP 4 такого ограничения нет (исключая тот случай, когда функции определяются условно). Немного подробнее. Прежде чем "запустить код скрипта на выполнение" интерпретатор его считывает одновременно анализируя на ошибки, и когда весь код прочитан(и нет FATAL ERROR) он преобразуется интерпретатором во внутренний код - опкод, который после этого и запускается. Поэтому нет разницы в каком месте скрипта идет определение функции.
Цитата (Юрий Шу @ 21.01.2009 - 17:14) |
P.P.S. А почему у отдельного файлика расширение .inc? Почему не .php? |
inc - include. Чтобы сразу было видно, что он подключается к скриптам. Расширение в этом случае не имеет значение, можно хоть function.lib (library).