php是'包含'一个函数还是一个声明?

Mr_*_*imp 20 php include

网上有很多这两个例子.php手册说"include()语句[...]",这似乎是矛盾的 - 如果它是一个声明,它不应该没有括号吗?

这两项工作:

include('somefile.php');
include 'somefile.php;
Run Code Online (Sandbox Code Playgroud)

我或其他任何人都应该关心吗?

Mar*_*ker 30

引自手册(我的重点)

由于包括()是一个特殊的语言结构,在括号不是需要围绕它的参数.

这些也被称为"特殊形式",包括诸如echoreturn陈述之类的东西.请注意,虽然这些都不是函数,但您仍然可以使用表达式和语句,区别在于前者具有值而后者不具有值.由于include,include_once,requirerequire_once所有的返回值(TRUE如果包括成功),他们可以在表达式中使用.通过这种推理,"include语句"将是不正确的,尽管includes几乎总是用作语句.

  • @Marc.2377 就像 PHP 中的大多数表达式可以返回一些东西一样(例如表达式“1+2”将返回值“3”,并且可以将其分配给变量“$x = 1+2”) ; 返回值不限于函数 (2认同)

Man*_*edi 9

include是一个声明:通过以下说明解释

// 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';
}
Run Code Online (Sandbox Code Playgroud)


eng*_*ree 5

括号是函数的参数.有了include你可以用它无论是作为一个功能或PHP的声明.

因为include()是一种特殊的语言结构,所以在其参数周围不需要括号.

文档:http://php.net/manual/en/function.include.php

使用echo相同的概念,在这里引用PHP手册

echo实际上不是一个函数(它是一个语言结构),所以你不需要使用括号.echo(与其他一些语言结构不同)的行为不像函数,所以它不能总是在函数的上下文中使用.