簡體   English   中英

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

[英]In PHP, how does include() exactly work?

include('./code.php'); 工作? 我理解這相當於直接在包含發生的地方“粘貼”代碼,但是,例如:

如果我有兩個頁面, page1.phppage2.php ,我需要在./code.php操作不同的變量和函數, include()創建了./code.php的副本,或者它本質上是鏈接回實際頁面./code.php

請參閱手冊

如果include文本文件,它將在文檔中顯示為文本。

include 表現得像復制粘貼:

test.php的

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

的test.txt

echo $test;

上面的例子將輸出:

**echo $test;**

如果要包含PHP文件,仍需要PHP標記<?php?>

此外,通常括號不includeinclude之后,如下所示:

include 'test.php';

基本上,當翻譯人員點擊include 'foo.php'; 語句,它打開指定的文件,讀取其所有內容,用另一個文件中的代碼替換“include”位,並繼續解釋:

<?php
echo "hello";

include('foo.php');

echo "world";

成為(理論)

<?php
echo "hello";

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

echo "world";

但是,所有這些只發生在內存中,而不是發生在磁盤上。 沒有文件被更改或任何東西。

這取決於您如何包含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 code.php的功能,請同時page1.phppage2.php

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

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

然后它會像你期望的那樣工作。 所以只需記住一些東西。

包含不像復制粘貼。

這是一個使用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);

為添加了聲明語句的文件啟用了嚴格類型(function.php)

它不適用於從外部文件(caller.php)進行的任何函數調用
因為在查看嚴格類型時,PHP總是會調用調用者。

要求不像復制/粘貼那樣工作

為了進一步了解,
關於如何執行PHP腳本的簡短回答
關於包含/要求在php中真正做什么的更容易理解的解釋

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

在任何情況下它都不會重定向到Code.php。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM