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

Mols

Новичок
Что значит "схавает"?
Он его выполнит. И выполнит без ошибок.
мое ИМХО - это скрипт.
 

WMix

герр M:)ller
Партнер клуба
данные интерпретируются как данные а скрипт как скрипт!

file 1.txt
Код:
$a=5;
echo "hallo $a";
Код:
php -dvld.active=1 -dvld.execute=0 1.txt 
Finding entry points
Branch analysis from position: 0
Return found
filename:       /home/wmix/1.txt
function name:  (null)
number of ops:  3
compiled vars:  none
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   4     0  >   EXT_STMT                                                 
         1      ECHO                                                     '%24a%3D5%3B%0Aecho+%22hallo+%24a%22%3B%0A%0A'
         2    > RETURN                                                   1
file 1.txt
Код:
<?php
$a=5;
echo "hallo $a";
Код:
php -dvld.active=1 -dvld.execute=0 1.txt 
Finding entry points
Branch analysis from position: 0
Return found
filename:       /home/wmix/1.txt
function name:  (null)
number of ops:  7
compiled vars:  !0 = $a
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      ASSIGN                                                   !0, 5
   3     2      EXT_STMT                                                 
         3      ADD_STRING                                       ~1      'hallo+'
         4      ADD_VAR                                          ~1      ~1, !0
         5      ECHO                                                     ~1
   5     6    > RETURN                                                   1

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

artoodetoo

великий и ужасный
PHP его выполнят как команду вывода. В этом особенность языка. Попробуйте умозрительно подставить на место PHP любой другой компилятор/интерпретатор.

Мне кажется тема раскрыта полностью. Спасибо всем за мнения!
 

Absinthe

жожо
текст "hello world" не имеет ни единой инструкции.
Имеет. Две. ECHO и RETURN.


то что в opcode встречается инструкция по обработке текста, не говорит ниочем. можно также представить набор инструкций на ассемблере для вывода .doc файла, не рассказывайте что .doc файл это ассемблер!
Если этот doc-файл успешно скомпилируется ассемблером, то это программа.
Но он не скомпилируется.

если стоит вопрос схавает ли пхп интерпретер "hello world" да схавает. вопрос скрипт ли это - нет это данные!
2 инструкции - уже скрипт.
 

WMix

герр M:)ller
Партнер клуба
Имеет. Две. ECHO и RETURN.
это не php а результат php-ретранслятора - другой язык называемый в народе opcode, содержащий действительно 2 инструкции. данные были считаны , чтоб их показать пришлось обернуть в новую обложку ECHO!
 
Последнее редактирование:

artoodetoo

великий и ужасный
... и выполнить

Даже когда небеса разверзнутся и глас небесный провозгласит начало Судного Дня, не все люди воспримут это однозначно. ;) Что уж говорить про пэхапэ.
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
WMix, ты ставишь себя в неловкое положение, говоря, что на вход интерпретатора могут подаваться данные. То, что вне скобок — это не просто данные, это неявный оператор вывода этих данных.

Впрочем, ясного определения, что есть PHP-скрипт я от тебя не слышал. Скрипт — это то, что между «<?php» и «?>»? А вот это что:
PHP:
<?php while(true) { ?>foo<?php } ?>
— это обрыв скрипта? А всё вместе как это называется? Тоже скрипт? А если будет просто «foo» — это уже не скрипт? А если будет
PHP:
<?php ?>foo<?php ?>
это опять скрипт?
 

WMix

герр M:)ller
Партнер клуба
но то что ?>внутри<? интерпретировать не нужно же! почуствуй разницу между
<?php while(true) { echo ++$a; } ?> и <?php while(true) { ?>++$a;<?php } ?>
 

WMix

герр M:)ller
Партнер клуба
PHP:
<?php
$a = 5;
include('inc.php');
echo $a;
какая разница если inc.php
PHP:
<?php $a++;
и
PHP:
$a++;
одно это активный скрипт который может изменить весь control flow, другое простой текст/данные!

но смысла спорить дальше действительно нет, мы поняли друг друга, просто не соглашаемся в определении!
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
Я тебе повторю специально: это неявный оператор вывода, ты сравниваешь некорректно. Запихни свой $a в echo '$a' — вот это и есть почти эквивалент. Ну, ещё один способ определения строкового литерала, если хочешь, совмещённый с echo.
 

hell0w0rd

Продвинутый новичок
Вурдалак
Да с чего вы все смотрите на результат работы интерпретатора? Скрипт - это то что до обработки. То что выплевывает интерпретатор - это уже его дело. Вот в момент исполнения любой текст будет скриптом, да.
 

WMix

герр M:)ller
Партнер клуба
Вурдалак
хорошо что напомнил заодно и Nowdoc
http://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.single

Замечание: В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.
те. как есть так и передаются!
 

fixxxer

К.О.
Партнер клуба
как есть, говоришь?

PHP:
<?php

switch ($_SERVER['argv'][1]) {
    case 1:
        ?>1<?php break;
    case 2:
        ?>2<?php break;
    default:
        ?>default<?php break;
}
Тот же echo вид сбоку. Если бы код обрабатывался только внутри <?php ... ?>, то вывелись бы все три строки (или вообще был бы parse error - ведь блоки бы тогда компилировались отдельно).

Фактически, php-код, исполняемый из файла, неявно префиксуется оператором начала вывода "?>". В этом можно легко убедиться, если скормить в eval что угодно, подписав к этому "?>", будет ровно тот же эффект.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Вурдалак
нет.
fixxxer
да, но то что выводится, остается в том же виде

на самом деле это вопрос интерпретации. красивого ответа не нашел никто. я зацепился за слово не обрабатываются, а вы за опкод.
можно поглядеть на это все с другой перспективы, ява-скрипт. до тех пор пока браузер не получит явную инструкцию <script> никакого активного яваскрипт контента не исполнится! (onclick в данном случае неинтересен)
можно попробывать представить что может произойти в случае
PHP:
echo $obj->b
те. все что угодно, пока не прочтешь не поймешь при этом
PHP:
echo file_get_contents('file')
можно не читать. ничего активного там быть неможет!

мое утверждение что скрипт это нечто активное, набор инструкций. ваше что любой file будет обработан как инструкция echo
Код:
крокодил больше длиный чем зеленый!
хоть пеной брызгой, пока нет четкого определения, спор бесполезен!
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
Определение до жути простое: если файл не содержит синтаксических ошибок (php -l) — это можно считать скриптом.
 

fixxxer

К.О.
Партнер клуба
Прекрасный пример с JavaScript. Четко иллюстрирует разницу.

PHP:
<script> if (is_bold) { </script><b><script> } </script>
Hello World!
<script> if (is_bold) { </script></b><script> } </script>
Ой, не работает.
 

WMix

герр M:)ller
Партнер клуба
Вурдалак
нет наоборот, скрипт может нагадить, а данные нет!
 
Последнее редактирование:
Сверху