Обрабатывает ли php условие полностью?

Если у меня к примеру есть самое простое условие
if (2 > 1) {
echo 'верно';
} else {
echo 'не верно';
}


Будет считывать весь код? Или то, что после else уже покинет , не будет его читать, и продолжит читать дальше? Возможно, тупой вопрос, с одной стороны, вроде как читается весь файл, но по идее зачем увеличивать загрузку страницы.
  • Вопрос задан
  • 261 просмотр
Решения вопроса 5
@FanatPHP
Чебуратор тега PHP
проверить своё предположение ты можешь очень просто - всего лишь внеся ошибку синтаксиса в код внутри else. Если РНР "не читает" его, то ошибка не появится.

Но, разумеется, ошибка будет. потому что у тебя неверное представление о работе интерпретаторов.

Разумеется, РНР сначала читает весь код. И только после этого начинает исполнение.
Чтобы не "увеличивать загрузку страницы" существует такая вещь как "опкод-кэш", который сохраняет уже "прочитанный" РНР код в памяти.
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Вы будете сильно удивлены, если узнаете, PHP перед выполнением скрипта транслирует его в байт-код, который потом и выполняет? Если да, то вам необходимо восполнить пробелы в знаниях о том как выполняются php-скрипты.
Ответ написан
@Arik
В данном случаи экономия на спичках, даже не думайте об этом.
Если же один файл содержит логики, которые можно сгруппировать (показываем только авто, показываем только самолеты), то разбиваем на мелкие файлы, но это больше хорошая практика читаемого кода, чем для PHP. Опкод наше все, все хорошо кэшируется
Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Код читается весь. Можно понять это по типичному примеру:
if (2 > 1) {
    echo 'ok';
} else {
    echo;
}

В условии else допущена ошибка. Если бы код не читал его, эта ошибка и не выводилась бы, однако, на деле вы увидите
Parse error:  syntax error, unexpected ';' in [...][...] on line 5

Вопрос не совсем корректен, php код компилируется и проходит кучу стадий перед его выполнением и как раз на этих стадиях ошибка и будет выдана. А что касается оптимизации - весь код загружается в память, а значит и else
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Кратко, для PHP: один php-файл всегда грузится в память целиком перед началом исполнения!
Нужно/хотите сэкономить - делайте подключение разных блоков кода условия в отдельных php-файлах через include().
И кэширование скомпилированного байт-кода (в этом случае) - очень сильно поможет увеличить скорость загрузки: минуя считывание с диска и компиляцию php-исходника в байт-код!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы