Является ли скриптом?

artoodetoo

великий и ужасный
Тему, где этот вопрос был офтопиком, закрыли, поэтому предлагаю обсудить здесь. Вопрос вродебы не имеющий смысла:

Является ли php-скриптом файл с расширением .php, если в нем нет <?php ?> и соответственно нет команд?

Я утверждаю, что да - является. Во первых, пустой скрипт это скрипт. Текст без тегов php это валидный файл для интерпретатора. Во вторых это особенность языка PHP: всё, что вне <?php ?> интерпретируется как вывод. Этот вывод подчиняется тем же правилам, что и вывод echo или любого другого оператора/функции вывода. Например он буферизуется.

Благодаря этой особенности, самый элегантный куайн на PHP это просто любой текст без <?php ?>. Я так решил :)

Всеядность PHP имеет богатые последствия. При некоторых злокозненных условиях, на вход интерпретатору может быть подан абсолютно "левый" файл и это не вызовет ошибки. Например можно сформировать валидный JPEG в одной из секций которого есть код PHP - и этот код будет выполнен. А всё, что кроме <?php ?> будет просто выдано в выходной поток.

Так что, IMHO, каждый должен помнить: любой файл, который попадает на вход интерпретатора PHP, является скриптом.
 

Absinthe

жожо
Оба варианта верные. На собеседовании хотят услышать не готовый ответ, а твои рассуждения.
 

WMix

герр M:)ller
Партнер клуба
файл с простым текстом такой же php как и html
 

Absinthe

жожо
Я поменял мнение.
Считаю однозначно скриптом.

Довод 1 (терминологический):
Если файл с контентом "hello world" дать на вход функции php_excecute_script, то функция успешно отработает.
По ее названию видим, что это скрипт. Следовательно, является.

Довод 2 (думаю, что этот довод безапелляционен):
http://3v4l.org/35TFe/vld#tabs
Обычный вывод вне <?php ?> все равно компилируется.
 

fixxxer

К.О.
Партнер клуба
php-скриптом является то, что успешно компилируется zend vm.

соответственно, в частности любой произвольный набор символов, в котором не встречается <?php, является php-скриптом ;)
 

fixxxer

К.О.
Партнер клуба
немного поясню мысль.

корректной программой на каком-то языке является программа, соответствующая спецификации языка. В случае отсутствии формальной спецификации (а именно этот случай у нас с php), ее заменяет reference implementation компилятора, которой является компилятор zend vm: если компилируется в опкоды и не выдает ошибок компиляции - значит, корректная программа.
 

Vladson

Сильнобухер
Мы о чём говорим то ?

А если вы на сковородку бросите не еду она зажарится ?
 

WMix

герр M:)ller
Партнер клуба
я о том, что до тех пор пока ни единого Anweisung небыло, интерпретировать нечего!
 

WMix

герр M:)ller
Партнер клуба
до echo нужно было запустить <? иначе этот echo как и любое другое слово, ни-о-чем!
 

Вурдалак

Продвинутый новичок
WMix, интерпретатор выполняет опкоды. В обоих случаях
PHP:
<?php echo 'foo'; ?>
PHP:
foo
будет такой набор инструкций:
Код:
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  >   ECHO                                                     'foo'
         1    > RETURN                                                   1
http://3v4l.org/2srEb/vld#tabs
http://3v4l.org/90bYl/vld#tabs
 

Absinthe

жожо
я о том, что до тех пор пока ни единого Anweisung небыло, интерпретировать нечего!
Даже у абсолютно пустого файла есть 1 опкод.

Код:
ubuntu@dev:~$ touch empty.php 
ubuntu@dev:~$ php -dvld.active=1 empty.php 
Finding entry points
Branch analysis from position: 0
Return found
filename:       /home/ubuntu/empty.php
function name:  (null)
number of ops:  1
compiled vars:  none
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  > > RETURN                                                   1

branch: #  0; line:     1-    1; sop:     0; eop:     0
path #1: 0,
 

WMix

герр M:)ller
Партнер клуба
очень здорово, что вы так глубоко копаете, теперь можно все файлы обозвать php скриптом. отвечу так, http://www.php.net/manual/ru/language.basic-syntax.phptags.php по мне phpscript это то что находится между <?php ?>
Когда PHP обрабатывает файл, он ищет открывающие и закрывающие теги, такие как <?php и ?>, которые указывают PHP, когда начинать и заканчивать обработку кода между ними.
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
— 42 — это не комплексное число!
— Ну это частный случай, тут мнимая часть равна нулю.
— Очень здорово, что вы так глубоко копаете, это теперь любое вещественное число можно назвать комплексным!
 

artoodetoo

великий и ужасный
Строго говоря, подсолнечное масло НЕ является дизтопливом. Но если его залить в бак, то оно СТАНОВИТСЯ дизтопливом.
 

hell0w0rd

Продвинутый новичок
Вурдалак
Конечно можно) Эти группы чисел являются множествами, а множествам свойственно пересекаться, входить друг в друга и тд)

На мой взгляд вопрос высосан из пальца и никак не характеризует соискателя. А вот работодателя да - он занимается демагогией.
Абсолютно любой текст на момент запуска интерпретатора является скриптом. Другое дело, что он может быть (не)валидным относительно данного интерпретатора.
 

WMix

герр M:)ller
Партнер клуба
Скрипт (script – англ. «cценарий») – компьютерная программа, представляющая собой последовательность инструкций
В общем случае, когда говорят об архитектуре фон Неймана, подразумевают принцип хранения данных и инструкций в одной памяти.
текст "hello world" не имеет ни единой инструкции. то что в opcode встречается инструкция по обработке текста, не говорит ниочем. можно также представить набор инструкций на ассемблере для вывода .doc файла, не рассказывайте что .doc файл это ассемблер! если стоит вопрос схавает ли пхп интерпретер "hello world" да схавает. вопрос скрипт ли это - нет это данные!
 
Сверху