Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2010, 15:34
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

условный определяемые ф-ции
в php анализ кода происходит как-то так:
исходный код анализируется (проверяется синтаксис и.т.д.) и транслируется: т.е. сначала работает транслятор, он транслирует код в какой-то свой байт код.
Далее PHP интерпретирует полученный байт-код, т.е выполняет его "инструкцию" одну за другой.
=> в PHP есть комбинация из транслятора и интерпретатора

Т.е.,транслятор, дойдя до определения ф-ции, проверит корректность определения. и оттранслирует его во внутреннее представление +
Каждая ф-ция добавляется во внутреннюю таблицу функций PHP тогда, когда управление доходит до участка кода, содержащего определение этой функции.

Потом интерпретатор при вызове ф-ции начнет выполнение ее команд.
=> мы можем вызывать ф-ций до того, как они определены.

если есть условное определение:
$a = 10;
        if ($a) {
            function alert1() {echo "1";}
        }
        else {
            function alert2() {echo "2";}
        }
        alert2();


получим ошибку
Fatal error: Call to undefined function alert2() in C:\xampp\htdocs\phptraining\index.php on line 59

Вроде по логике мы просто во время работы транслятора мы не "дошли" до определения функции alert2, => она не была добавлена во внутреннюю таблицу PHP функций

Но ведь по идее транслятор обрабатывает весь код? И до function alert2 он тоже должен дойти.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2010, 15:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Обрабатывает-то весь, а функции создаёт, когда до них выполнение доходит, так же как и любые другие операторы выполняет, когда до них выполнение доходит.
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2010, 15:56
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Правильно ли я понимаю?
Очень грубо говоря:
1. Транслятор проверит все на синтаксис,
2. выполнение дойдет только до одного определения ф-ции, она же и будет
транслятором добавлена во внутреннюю таблицу ф-ций PHP, (это и позволяет интерпретатору вызвать функции до их определения.).
3.затем выполнится полученный байт-код
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2010, 16:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://www.php.ru/manual/language.functions.html
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2010, 16:57
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Короче, вот так делать и все:
"В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в двух приведенных ниже примерах, обработка описания функции должна предшествовать ее вызову. "

А вот интересно
<script>
            var a = 10;
           if (a) {
               function alert1 () {alert(1);}
           }
           else {
               function alert2() {alert(2);}
           }
           alert2();
        </script>


в IE7 работает, а в Firefox ругается ) (на alert2 естесстно)
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2010, 17:18
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А причём здесь JavaScript?
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2010, 18:08
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

А я заодно посмотрел просто)
Здесь он не причем
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условный раскрывающийся список на javascript hizer Элементы интерфейса 5 04.02.2010 17:15