在PHP中,include()如何正常工作?

时间:2012-08-24 23:16:19

标签: php

include('./code.php');如何运作?我理解这相当于直接在包含发生的地方“粘贴”代码,但是,例如:

如果我有两个页面,page1.phppage2.php,我需要在./code.php中操作不同的变量和函数,include()是否会创建./code.php的副本{1}},还是基本上链接回实际页面./code.php

5 个答案:

答案 0 :(得分:7)

See the manual

如果你include是一个文本文件,它将在文档中显示为文本。

include 的行为与复制粘贴相同:

<强> test.php的

<?php
echo '**';
$test = 'test';
include 'test.txt';
echo '**';
?>

<强>的test.txt

echo $test;

上面的例子将输出:

**echo $test;**

如果要包含PHP文件,则仍需要使用PHP标记<?php?>

此外,通常括号不会放在include之后,如下所示:

include 'test.php';

答案 1 :(得分:6)

基本上,当解释器命中include 'foo.php';语句时,它会打开指定的文件,读取其所有内容,用另一个文件中的代码替换“include”位,然后继续解释:

<?php
echo "hello";

include('foo.php');

echo "world";

成为(理论)

<?php
echo "hello";

?>
{CONTENT OF foo.php}
<?php

echo "world";

但是,所有这些只发生在内存中,而不是发生在磁盘上。没有文件被更改或任何内容。

答案 2 :(得分:0)

这取决于您如何包含code.php文件。如果你将code.php文件包含在page1.php中,然后将page2.php包含在内,那么你就可以访问它的vars,它会有效地“复制和粘贴”(beaware只是用来让它更容易理解,因为实际如上所述,如果您链​​接如下文件中的文件动态:

[code.php]
include('page1.php');
include('page2.php');

然后code.php可以访问page1.php中的所有变量,但是:

  • page1.php将无法访问code.php中的vars
  • page2.php将无法访问code.php中的vars

为了inherit page1.phppage2.php[page1.php] include('code.php'); [page2.php] include('code.php'); 中的code.php的功能必须确实如下:

{{1}}

然后它将按预期工作。所以只需记住一些事情。

答案 3 :(得分:0)

包含的行为不像复制粘贴。

这是使用PHP严格类型声明的演示

<?php

// function.php (file)

declare (strict_types = 1);

function sum(int $a, int $b)
{
  return $a + $b;
}

/**
 * This will throw TypeError: 
 */

// echo sum(5.2, 5);

但是,如果我从外部文件调用此函数

<?php

// caller.php (file)

require_once 'function.php';

/**
 * This will Work instead of throwing a TypeError:
 */

echo sum(5.2, 5);

为添加了clarify语句的文件(function.php)启用了严格类型

它不适用于从外部文件(caller.php)进行的任何函数调用
 因为在寻求评估严格类型时,PHP将始终服从调用者。

Require不能像复制/粘贴一样工作

为进一步了解,
Short answer on how PHP script is Executed
A more comprehensible explanation on what include/require really does in php

答案 4 :(得分:-1)

include('./code.php'); // The Same As Pasting The Code From Code.PHP.

在任何情况下都不会重定向到Code.php。