백엔드 개발 PHP 튜토리얼 require(),include(),require_once()和include_once()的异同_PHP教程

require(),include(),require_once()和include_once()的异同_PHP教程

Jul 21, 2016 pm 03:58 PM
include once require 그리고 유사점과 차이점 가지다 ~의 유사

require()和include()有许多相似之处,也有些不同。理解它们的不同点非常重要,否则很容易犯错误。 

我把这两个语句放在一起介绍,读者可以比较学习。 
1.require()语句 
  require()语句用于指定的文件代替语句本身,就象C语言中的include()语句一样。如果php配置文件php.ini中的URL fopen wrappers 是打开的(默认情况下是打开的),就可以使用URL来指定文件的位置从而实现远程文件的调用。 
  有一点就是使用require()和include()语句时要特别的注意。那就是在被包含的文件中,处理器是按照html模式来解释其中的内容的,处理完被包含的内容后又恢复到php模式。所以如果需要在被包含文件中使用php语法,就要使用正确的php开始和结束标记来把这些语句包含进去。 
  require()和include()知识php中的一种语言特性,而不是函数。它们和函数有许多不同的地方。 
比如:require()所包含的文件中不能包含控制结构,而且不能使用return这样的语句。在require()所包含的文件中使用return语句会产生处理错误。 
  不象include()语句,require()语句会无条件地读取它所包含的文件的内容,而不管这些语句是否执行。所以如果你想按照不同的条件包含不同的文件,就必须使用include()语句。当然,如果require()所在位置的语句不被执行,require()所包含的文件中的语句也不会被执行。 
  require()不能在循环体中根据条件的不同而包含不同的文件。require()语句只会在第一次执行时调用它所包含的文件中的内容替换本身这条语句,当再次被执行时只能执行第一次所包含的语句。但是include()语句可以在循环体中来包含不同的文件。 
  require()语句中的变量继承require()语句所在位置的变量作用域。所有在require()语句的位置可以访问的变量,在require()语句所包含的文件中都可以访问。如果require()语句位于一个函数内部,那么被包含文件内的语句都相当于定义在函数内部。 
  require()语句在PHP程序执行前就会将使用require引用的文件读入,因此require通常放到程序的开始处。因此要特别注意一点,require语句有一点强,不管程序是否真的需要引用的文件,只要你使用require语句,它都会把他们包含进来!即使你是在条件控制语句中使用这个函数进行包含,那怕是那个条件不为真,引用文件也会被包含进来!形成了僵尸,在运行过程中这些僵尸是不起任何可见作用的,但是很明显它会加重负担,所以这一点要特别注意!如果使用require语句发生了包含错误,那么程序将输出出错信息并停止运行!! 

  如果require()语句通过声明文件的URL来包含远程文件,而且远程服务器按照php代码来解释该文件的话,本地php文件中所包含的内容是在远程服务器上处理以后的结果。例如: 
  /* 
    这个例子假设some_server服务器可以解释.php文件,而不对.txt文件进行解释。在远程文件中   
  需要变量$varfirst和$varsecond 
  */ 
  /*不能正确执行,远程服务器不处理.txt文件*/ 
  require("http://some_server/file.txt?varfirst=1&varsecond=2"); 

  /*不正确,这样只能在本地机上寻找file.php文件*/ 
  require("file.php?varfirst=1&varsecond=2"); 

  /*正确的语句*/ 
  require("http://some_server/file.php?varfirst=1&varsecond=2"); 

  $varfirst=1; 
  $varsecond=2; 
  require("file.txt"); /*正确的语句*/ 
  require("file.php"); /*正确的语句*/ 
  本来在php3.0中,require()所包含的文件可以使用return语句,但条件是return语句不能出现在{}内部,而必须出现在被包含文件的全局范围内。在php4.0中已经取消了require()的这个功能,但是仍然可以使用include()来实现。 

2.include()语句 
  include()语句和require()语句有许多相同的地方。凡是在上边require()语句中没有明确说明不能适用于include()的部分外,require()语句的功能完全适用于include()语句。下边介绍require()语句所没有的include()语句的功能和特点。 
  include语句只有在被执行时才会读入要包含的文件。在错误处理方便,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行! 
    php处理器会在每次遇到include()语句时,对它进行重新处理,所以可以根据不同情况的,在条件控制语句和循环语句中使用include()来包含不同的文件。 
    例如: 
      $files=array('first.php','second.php','third.php'); 
    for($i=0;$i    { 
        include $files[$i]; 
    } 
  ?> 
    在php3.0和php4.0中include()语句所包含的文件中都可以使用return语句来返回一个值,并停止执行被包含文件下面的内容。但php3.0和php4.0在处理这样的情况时有所不同。在php3.0中return语句不能包含在{}内,除非它在一个函数中,因为这时它表示函数的返回值而不是文件的返回值。而在php4.0中就没有了这样的限制,用户甚至可以在文件中返回一个数字,就象函数的返回值一样。这样的语句在 

php3.0中通常会报告错误。以下举例说明: 
    假设被包含的文件为test.inc和主文件main.php位于一个目录中。test.inc的内容如下: 
test.inc 
  echo "Before the return
\n"; 
  if(1) 
  { 
    return 27; 
  } 
  echo "After the return
\n"; 
?> 

假设在main.php文件中包含下面的语句: 
  $retval=include('test.inc'); 
  echo "File returned:'$retval'
\n"; 
?> 
  php3.0解释器会在第二行报告错误,而不能得到include()语句的返回值。但在php4.0中会得到下面的结果: 
  Before the return 
  File returned: '27' 
  下边假设main.php改为: 
  include('test.inc'); 
  echo "Back in main.html
\n"; 
?> 
  在php4.0中的输出结果是: 
  Before the return 
  Back in main.html 

  在php5.0中的输出结果也是: 
  Before the return 
  Back in main.html 

  在php3.0中的输出结果是: 
  Before the return 
  27Back in main.html 

  Parse error:parse error in /apache/htdocs/phptest/main.html on line 5 

  出现上面的错误是因为return语句位于{}内部而且不是一个函数内部。如果把{}去掉,使它位于test.inc的最外层,输出结果是: 
  Before the return 
  27Back in main.html 
  之所以出现27,是因为在php3.0中不支持include()返回。 

3.require_once()和include_once()语句 
  require_once()和include_once()语句分别对应于require()和include()语句。require_once()和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。例如:如果创建两个文件util.inc和fool.inc,程序代码分别为: 
  util.inc: 
      define(PHPVERSION,floor(phpversion())); 
    echo "GLOBALS ARE NICE
\n"; 
    function goodTea() 
    { 
      return "Olong tea tasts good!"; 
    } 
  ?> 
  和fool.inc: 
      require ("util.inc"); 
    function showVar($var) 
    { 
      if(PHPVERSION==4) 
      { 
          print_r($var); 
      } 
      else 
      { 
          var_dump($var); 
      } 
    } 
  ?> 
  然后在error_require.php中包含这两个文件: 
      require("fool.inc"); 
    require("util.inc");//此句会产生一个错误 
    $foo=array("1",array("complex","quaternion")); 
    echo "this is requiring util.inc again which is also
\n"; 
    echo "required in fool.inc\n"; 
    echo "Running goodTea:".goodTea()."
\n"; 
    echo "Printing foo:
\n"; 
    showVar($foo); 
  ?> 
  当运行error_require.php时,输出结果如下: 
  GLOBALS ARE NICE 
  GLOBALS ARE NICE 

  Fatal error:Cannot redeclare goodTea() in util.inc on line 4 

  如果使用require_once()语句来代替 require()语句,就不会出现上面的错误。我们把error_require.php和fool.inc中的require()语句改为require_once()语句并重命名为error_require_once.php,这是显示结果如下: 
  GLOBALS ARE NICE 
  this is requiring util.inc again which is also 
  required in fool.inc Running goodTea:Olong tea tastes good! 
  Printing foo: 
  Array([0] => 1 [1] => Array ([0] => complex [1] = quaternion)) 

  include_once()语句的语法和include()语句类似,主要区别也是避免多次包含一个文件而引起函数或变量的重复定义。 

  require_once语句有一个引用链,它可以保证文件加入你的程序仅仅只有一次,而且会避开变量值和函数名之间的冲突。 

  和require_once语句一样,include_once语句把include的功能扩展了。在程序执行期间,将指定的文件包含进来,如果从文件引用进来的程序先前已经包含过的时候,include_once()就不会把它再包含进来。也就是仅仅可以引用同一个文件一次! 

  include_once() 语句在脚本执行期间包含并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。 

include_once() 应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。 

使用 require_once() 和 include_once() 的更多例子见最新的 PHP 源程序发行包中的 PEAR 代码。 

返回值和 include() 相同。如果文件已被包含,本函数返回 TRUE。 

注: include_once() 是 PHP 4.0.1pl2 中新加入的。 

注: 要注意 include_once() 和 require_once() 在大小写不敏感的操作系统中(例如 Windows)的行为 

可能不是所期望的。 
例子: include_once() 在 Windows 下不区分大小写 

include_once("a.php"); // this will include a.php 
include_once("A.php"); // this will include a.php again on Windows! (PHP 4 only) 
?>   

此行为在 PHP 5 中改了,路径先被规格化,因此 C:\PROGRA~1\A.php 和 C:\Program Files\a.php 的实现一样,文件只会被包含一次。 

  如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出。 

  win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许Linux下情况不同,暂时还没测试。 

  如果一个文件不想被包含多次可以使用include_once或require_once## 读取,可以写入文档数据。 
function r($file_name) { 
 $filenum=@fopen($file_name,"r"); 
 @flock($filenum,LOCK_SH); 
 $file_data=@fread($filenum,filesize($file_name)); 
 @fclose($filenum); 
 return $file_data; 

function w($file_name,$data,$method="w"){ 
 $filenum=@fopen($file_name,$method); 
 flock($filenum,LOCK_EX); 
 $file_data=fwrite($filenum,$data); 
 fclose($filenum); 
 return $file_data; 

?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/317675.htmlTechArticlerequire()和include()有许多相似之处,也有些不同。理解它们的不同点非常重要,否则很容易犯错误。 我把这两个语句放在一起介绍,读者可以...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

GIGABYTE 마더보드에서 키보드 부팅 기능을 설정하는 방법(GIGABYTE 마더보드에서 키보드 부팅 모드 활성화) GIGABYTE 마더보드에서 키보드 부팅 기능을 설정하는 방법(GIGABYTE 마더보드에서 키보드 부팅 모드 활성화) Dec 31, 2023 pm 05:15 PM

Gigabyte 마더보드에서 키보드 시작을 설정하는 방법 먼저, 키보드 시작을 지원해야 한다면 PS2 키보드여야 합니다! ! 설정 단계는 다음과 같습니다. 1단계: 부팅 후 Del 또는 F2를 눌러 BIOS에 들어가고, BIOS의 고급(Advanced) 모드로 들어갑니다. 일반 마더보드는 기본적으로 마더보드의 EZ(Easy) 모드로 들어갑니다. F7을 눌러 고급 모드로 전환합니다. ROG 시리즈 마더보드는 기본적으로 BIOS로 들어갑니다. 고급 모드(간체 중국어를 사용하여 설명) 2단계: - [고급] - [고급 전원 관리(APM)]를 선택합니다. [PS2 키보드로 깨우기] 옵션 찾기 4단계: 이 옵션 기본값은 비활성화입니다. 아래로 당기면 세 가지 다른 설정 옵션이 표시됩니다. 즉, 컴퓨터를 켜려면 [스페이스바]를 누르고 그룹을 누르세요.

vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 May 21, 2023 pm 03:16 PM

vue3+vite:src는 require를 사용하여 이미지를 동적으로 가져오고 vue3+vite는 여러 이미지를 동적으로 가져옵니다. vue3을 사용하는 경우 require는 이미지를 사용할 수 없습니다. imgUrl:require(' .../assets/test.png') 와 같은 vue2는 typescript가 require를 지원하지 않기 때문에 가져오므로 이를 해결하는 방법은 다음과 같습니다. waitimport를 사용합니다.

CS 플레이어를 위한 첫 번째 선택: 권장 컴퓨터 구성 CS 플레이어를 위한 첫 번째 선택: 권장 컴퓨터 구성 Jan 02, 2024 pm 04:26 PM

1. 프로세서 컴퓨터 구성을 선택할 때 프로세서는 가장 중요한 구성 요소 중 하나입니다. CS와 같은 게임을 플레이할 때 프로세서의 성능은 게임의 부드러움과 응답 속도에 직접적인 영향을 미칩니다. Intel Core i5 또는 i7 시리즈 프로세서는 강력한 멀티 코어 처리 기능과 높은 주파수를 갖추고 CS의 높은 요구 사항에 쉽게 대처할 수 있으므로 선택하는 것이 좋습니다. 2. 그래픽 카드 그래픽 카드는 게임 성능을 좌우하는 중요한 요소 중 하나입니다. CS 등 슈팅 게임에서는 그래픽 카드의 성능이 게임 화면의 선명도와 부드러움에 직접적인 영향을 미칩니다. NVIDIA GeForce GTX 시리즈 또는 AMD Radeon RX 시리즈 그래픽 카드를 선택하는 것이 좋습니다. 이 카드는 뛰어난 그래픽 처리 기능과 높은 프레임 속도 출력을 갖추고 있으며 더 나은 게임 경험을 제공할 수 있습니다.

Glodon Software의 컴퓨터 구성 권장 사항, Glodon Software의 컴퓨터 구성 요구 사항 Glodon Software의 컴퓨터 구성 권장 사항, Glodon Software의 컴퓨터 구성 요구 사항 Jan 01, 2024 pm 12:52 PM

글로돈소프트웨어(Glodon Software)는 건축정보화 분야에 주력하는 소프트웨어 회사로, 해당 제품은 건축 설계, 시공, 운영 전반에 걸쳐 폭넓게 사용되고 있다. Glodon 소프트웨어의 복잡한 기능과 대용량 데이터로 인해 높은 컴퓨터 구성이 필요합니다. 이 기사에서는 독자가 적합한 컴퓨터 구성 프로세서를 선택할 수 있도록 Glodon 소프트웨어의 컴퓨터 구성 권장 사항을 여러 측면에서 자세히 설명합니다. Glodon 소프트웨어는 아키텍처 설계, 시뮬레이션 및 기타 작업을 수행할 때 많은 양의 데이터 계산 및 처리가 필요합니다. 프로세서의 경우 더 높습니다. Intel i7 시리즈 또는 AMD Ryzen 시리즈와 같은 멀티 코어, 고주파 프로세서를 선택하는 것이 좋습니다. 이러한 프로세서는 강력한 컴퓨팅 성능과 멀티 스레드 처리 기능을 갖추고 있어 Glodon 소프트웨어의 요구 사항을 더 잘 충족할 수 있습니다. 메모리 메모리가 컴퓨팅에 영향을 미치고 있습니다.

마더보드의 디지털 오디오 출력 인터페이스 - SPDIF OUT 마더보드의 디지털 오디오 출력 인터페이스 - SPDIF OUT Jan 14, 2024 pm 04:42 PM

마더보드의 SPDIFOUT 연결 라인 순서 최근에 전선의 배선 순서에 문제가 발생했습니다. 온라인에서 확인해 보니 1, 2, 4가 out, +5V, ground에 해당한다는 정보도 있고, 1, 2, 4가 out, ground, +5V에 해당한다는 정보도 있습니다. 가장 좋은 방법은 마더보드 설명서를 확인하는 것입니다. 설명서를 찾을 수 없으면 멀티미터를 사용하여 측정할 수 있습니다. 먼저 접지를 찾은 다음 나머지 배선의 순서를 결정할 수 있습니다. 마더보드 VDG 배선 연결 방법 마더보드의 VDG 배선을 연결할 때 VGA 케이블의 한쪽 끝을 모니터의 VGA 인터페이스에 연결하고 다른 쪽 끝을 컴퓨터 그래픽 카드의 VGA 인터페이스에 연결해야 합니다. 마더보드의 VGA 포트에 연결하지 않도록 주의하세요. 연결되면 다음을 수행할 수 있습니다.

프로그래밍에서 C 언어와 Python의 유사점과 차이점에 대한 자세한 설명 프로그래밍에서 C 언어와 Python의 유사점과 차이점에 대한 자세한 설명 Mar 18, 2024 pm 12:09 PM

C 언어와 Python은 일반적으로 사용되는 두 가지 프로그래밍 언어이며 여러 측면에서 명백한 유사점과 차이점을 가지고 있습니다. 이 기사에서는 구문, 성능, 사용 용이성 등의 측면에서 C 언어와 Python을 자세히 비교하고 이들 간의 차이점을 보여주는 구체적인 코드 예제를 제공합니다. 구문의 유사점과 차이점: C 언어는 프로세스 지향 프로그래밍 언어입니다. 구문은 상대적으로 엄격하고 번거롭기 때문에 개발자가 메모리와 데이터 유형을 스스로 관리해야 합니다. Python은 간결하고 읽기 쉬운 구문을 갖춘 고급 언어이므로 변수 유형을 명시적으로 선언할 필요가 없습니다. 샘플 코드

R55600(R55600u 및 5600h 포함)과 호환되는 ASUS 마더보드 옵션 R55600(R55600u 및 5600h 포함)과 호환되는 ASUS 마더보드 옵션 Jan 02, 2024 pm 05:32 PM

R55600과 어떤 ASUS 마더보드를 결합해야 합니까? ASUS ROGStrixB550-FGaming 마더보드는 탁월한 선택입니다. Ryzen55600X 프로세서와 완벽하게 호환되며 뛰어난 성능과 기능을 제공합니다. 이 마더보드는 안정적인 전원 공급 시스템을 갖추고 있으며 오버클러킹을 지원할 수 있으며 일상적인 사용과 게임 요구 사항을 충족할 수 있는 풍부한 확장 슬롯과 포트를 제공합니다. ROGStrixB550-FGaming은 또한 고품질 오디오 솔루션, 빠른 네트워크 연결 및 안정적인 열 방출 설계를 갖추고 있어 시스템이 효율적이고 안정적으로 유지되도록 보장합니다. 또한, 이 마더보드는 화려한 ROG 스타일을 채택하고 화려한 RGB 조명 효과를 탑재하여 컴퓨터에 시각적 즐거움을 더해줍니다. 전체적으로 ASUS ROGStri

Celeron g4900과 i36100 중 어느 것이 더 낫습니까? (Celeron g4900과 i34170 중 어느 것이 더 낫습니까?) Celeron g4900과 i36100 중 어느 것이 더 낫습니까? (Celeron g4900과 i34170 중 어느 것이 더 낫습니까?) Jan 01, 2024 pm 06:01 PM

Celeron g4900과 i36100 중 어느 것이 더 낫습니까? 두 프로세서 Celeron G4900과 I36100의 경우 I36100의 성능이 우수하다는 것은 의심의 여지가 없습니다. 셀러론 프로세서는 일반적으로 저가형 프로세서로 간주되며 주로 저가형 노트북에 사용됩니다. I3 프로세서는 주로 고급 프로세서에 사용되며 성능이 매우 좋습니다. 게임을 하든, 동영상을 보든 I3 프로세서를 사용해도 아무런 지연이 발생하지 않습니다. 따라서 가능하다면 온라인 세계의 즐거움을 누릴 수 있도록 특히 데스크탑 컴퓨터용 Intel I 시리즈 프로세서를 구입해 보십시오. Celeron G4900T의 성능은 어떻습니까? 성능 측면에서 Pentium G4900T는 이전 버전과 비교하여 성능이 좋습니다.

See all articles