Является ли php 'include' функцией или оператором? - PullRequest
20 голосов
/ 10 февраля 2011

В сети есть множество примеров того и другого. В руководстве по PHP написано «оператор include () [...]», что кажется противоречивым - если это утверждение, не должно ли оно иметь круглые скобки?

Обе эти работы:

include('somefile.php');
include 'somefile.php;

Так мне или кому-то еще наплевать?

Ответы [ 9 ]

30 голосов
/ 10 февраля 2011

Цитирование из руководства (мой акцент)

Поскольку include () - это специальная языковая конструкция , круглые скобки не необходимы для его аргумента.

Они также называются "специальными формами" и включают такие вещи, как операторы echo и return.Обратите внимание, что хотя ни одна из этих функций не является функцией, вы все равно можете говорить о выражениях и утверждениях, разница в том, что первые имеют значение, а вторые - нет.Поскольку include, include_once, require и require_once все возвращают значение (TRUE, если включение было успешным), их можно использовать в выражениях.По этой причине «включение оператора» будет неправильным, хотя include s почти всегда используются в качестве операторов.

9 голосов
/ 10 февраля 2011

включает в себя утверждение: Объясните, например,

// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

// works
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
5 голосов
/ 25 марта 2013

Скобки - это параметры для функции. С include вы можете использовать его как функцию или оператор в php.

Поскольку include () - это специальная языковая конструкция, скобки не нужно вокруг его аргумента.

Документация здесь: http://php.net/manual/en/function.include.php

При echo та же концепция, цитата из руководства PHP здесь

echo на самом деле не функция (это языковая конструкция), поэтому вы не требуется для использования скобок с ним. эхо (в отличие от некоторых других языковые конструкции) не ведет себя как функция, поэтому не может всегда использоваться в контексте функции.

1 голос
/ 25 марта 2013

include, require, echo, print, а также несколько других ключевых слов являются языковыми конструкциями, а не вызовами функций, и не нуждаются в скобках.Однако некоторым людям нравится делать вид, что они являются вызовами функций, и в любом случае использовать скобки.Они идентичны.

1 голос
/ 10 февраля 2011

Оба.Во многих областях документации PHP все называется оператором.Пример (из управляющих структур) - «Оператор может быть присваиванием, вызовом функции, циклом, условным оператором или даже оператором, который ничего не делает (пустой оператор).»

Разница между операторома функции - это вопрос семантики отдельного языка.Таким образом, разработчики PHP должны либо явно определить это, либо оставить это двусмысленным.

1 голос
/ 10 февраля 2011

Одиночные значения внутри паренов имеют значение для самого значения, поэтому сами парены не имеют значения.

0 голосов
/ 25 марта 2013

для эха всегда используйте эхо "тест"

<?php 
// this will give you error
echo ("test","test");

//that will work fine
echo "test","test";
?>
0 голосов
/ 25 марта 2013

Я считаю, что единственная разница в том, что вы хотите сделать.

Например, эти два

echo 'Hello World';
echo ('Hello World');

... обе печати Hello World .

Это именно то, что вы хотите делать, с чем вам удобнее всего, и если вы похожи на меня, вы хотите, чтобы ваш сценарий выглядел красиво: D

0 голосов
/ 10 февраля 2011

Заявления, имеющие только один параметр, также могут иметь круглые скобки, например:

echo ('hello world'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...