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

时间:2011-02-10 10:11:10

标签: php include

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

这两项工作都是:

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

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

9 个答案:

答案 0 :(得分:30)

从手册中引用(我的重点)

  

因为include()是特殊语言构造,所以围绕其参数的括号

这些也称为“特殊表单”,包括echoreturn语句。请注意,虽然这些都不是函数,但您仍然可以使用表达式和语句,区别在于前者具有值而后者不具有值。由于includeinclude_oncerequirerequire_once都返回值(如果包含成功,则为TRUE),因此可以在表达式中使用它们。通过这种推理,“include语句”是不正确的,尽管include几乎总是用作语句。

答案 1 :(得分: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';
}

答案 2 :(得分:5)

括号是函数的参数。 使用include,您可以将其用作php中的函数或语句。

  

因为include()是一种特殊的语言结构,所以括号不是   需要围绕它的论点。

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

使用echo相同的概念,引用PHP手册here

  

echo实际上并不是一个函数(它是一种语言结构),所以你   不是必需使用括号。回声(与其他一些不同   语言结构)不像一个函数,所以它不能   总是在函数的上下文中使用。

答案 3 :(得分:1)

parens中的单个值会评估值本身,因此parens本身并不重要。

答案 4 :(得分:1)

两者。在PHP文档的许多方面,所有内容都被称为语句。示例(来自控制结构) - “语句可以是赋值,函数调用,循环,条件语句,甚至不执行任何操作的语句(空语句)。”

语句和函数之间的区别在于单个语言的语义。因此,PHP维护者要么明确地定义它,要么让它保持模棱两可。

答案 5 :(得分:1)

includerequireechoprint以及少数其他关键字是自己的语言构造,而不是函数调用,并且不需要括号。然而,有些人喜欢假装他们是函数调用并且无论如何都使用括号。它们完全相同。

答案 6 :(得分:0)

对于echo总是使用 echo“test”

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

//that will work fine
echo "test","test";
?>

答案 7 :(得分:-1)

只有一个参数的语句也可以有括号,例如:

echo ('hello world'); 

答案 8 :(得分:-1)

我相信唯一的区别就是你想要做的事情。

例如,这两个

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

...同时打印 Hello World

这正是你想要做的,你最满意的,如果你像我一样,你想让你的剧本看起来漂亮:D