PHP의 include 및 require 사용 상세 정보

5304 단어 PHPincluderequire
PHP에는 include와 require 등 외부 파일을 포함하는 두 가지 방식이 있습니다.그들 사이에는 어떤 차이가 있습니까?
파일이 없거나 오류가 발생하면require에서 E_COMPILE_ERROR 수준의 오류로 프로그램이 실행을 중지합니다.include는 경고만 발생하고 스크립트는 계속 실행됩니다.
이것이 바로 그것들의 가장 주요한 차이점이다. 다른 방면에서require는 기본적으로include와 같다.
  • 포함된 파일은 매개 변수에 따라 경로를 찾고, 디렉터리 (파일 이름만 있음) 가 없으면 include_path에서 지정한 디렉터리를 찾습니다.하면, 만약, 만약...path에서 이 파일을 찾지 못하면include는 마지막으로 스크립트 파일이 있는 디렉터리와 현재 작업 디렉터리에서 찾을 수 있습니다
  • 절대 경로든 현재 디렉터리든 경로를 정의하면 include_경로는 완전히 무시됩니다
  • include_path는 php에 있습니다.ini에서 정의합니다
  • 파일이 포함될 때, 그 안에 포함된 코드는include가 행에 있는 변수 범위를 계승합니다.이 곳부터 호출 파일은 이 줄에서 사용할 수 있는 모든 변수를 호출된 파일에서도 사용할 수 있습니다.그러나 포함 파일에 정의된 모든 함수와 클래스는 전역 작용역을 가지고 있다
  • 보통require와include를 제외하고require_once 및 include_once, 그들의 역할은 다음과 같다.
  • 이 파일에 이미 포함되어 있으면 다시 포함되지 않습니다.이 문장의 이름이 암시하는 것처럼 한 번만 포함될 수 있다
  • 스크립트가 실행되는 동안 같은 파일이 한 번 이상 포함될 수 있는 경우, 함수 재정의, 변수 재부여 등 문제를 피하기 위해 한 번만 포함될 수 있도록 합니다
  • 예를 살펴보겠습니다.
    
    // a.php  
    include "a.php"; // warning
    // require "a.php"; // error
    
    echo 111; //  include 111 
    
    // file1.php  echo 'file1';
    require_once 'includeandrequire/file1.php'; // file1
    require_once 'includeandrequire/file1.php'; // noting
    
    include_once 'includeandrequire/file1.php'; // noting
    include_once 'includeandrequire/file1.php'; // noting
    
    require 'includeandrequire/file1.php'; // file1
    require 'includeandrequire/file1.php'; // file1
    
    require 'includeandrequire/file1.php'; // file1
    require 'includeandrequire/file1.php'; // file1
    
    
    저희가 첫 번째로_once 로딩에 성공하면 뒤에 require_once 아니면 include_once, 이 파일을 다시 불러오지 않을 거예요.없음_once는 파일을 다시 불러옵니다.
    
    file2.php
    
    <?php
    
    echo 'file2:' . $a, PHP_EOL;
    echo 'file2:' . $b, PHP_EOL;
    $b = "file2";
    
    myFile.php
    
    <?php
    
    $a = 'myFile';
    $b = 'youFile';
    require_once 'includeandrequire/file2.php';
    echo $a, PHP_EOL;
    echo $b, PHP_EOL;
    
    //  
    // file2:myFile
    // file2:youFile
    // myFile
    // file2
    
    file3.php
    <?php
    
    $c = 'file3';
    
    myFile.php
    <?php
    function test(){
        require_once 'includeandrequire/file3.php';
        echo $c, PHP_EOL; // file3
    }
    test();
    echo $c, PHP_EOL; // empty
    
    
    포함된 파일에서는 상위 파일에 있는 변수를 얻을 수 있고, 상위 파일에서는 파일에 있는 변수를 얻을 수 있지만, 주의_once의 특수한 상황.
    
    function foo(){
        require_once 'includeandrequire/file3.php';
        return $c;
    }
    
    for($a=1;$a<=5;$a++){
        echo foo(), PHP_EOL;
    }
    
    // file3
    // empty
    // empty
    // empty
    // empty
    
    
    사용_once가 순환적으로 불러올 때 file3을 처음 출력합니다.php의 내용, 왜 이러지?현재 변수 범위 작용역은 방법에 있기 때문에, 첫 번째 불러오기가 끝난 후, 다음 파일은 다시 불러오지 않습니다. 이 때 다음 네 번째 순환은 $c가 정의되지 않습니다. $c는 기본적으로 비어 있습니다.
    하면, 만약, 만약...once가 파일을 불러왔습니다. 두 번째 방법은 불러올 수 있습니까?
    
    function test1(){
        require_once 'includeandrequire/file1.php';
    }
    function test2(){
        require_once 'includeandrequire/file1.php';
    }
    test1(); // file1
    test2(); // empty
    
    
    죄송합니다. 첫 번째 방법만 불러옵니다. 두 번째 방법은 다시 불러오지 않습니다.
    그렇다면 우리는 일상적인 개발에서 어떤 것을 사용하는 것이 더 좋을까?
  • 효율적으로_once는 파일을 불러왔는지 검증해야 합니다. 효율이 낮을 수 있지만 절대적인 것은 아닙니다. 심지어 육안으로 볼 수 없는 저하이기 때문에 효율 문제를 무시할 수 있습니다.그것의 장점은 없는 것보다 낫다_once가 훨씬 많아요
  • 잘못된 앞당김의 원칙에 따라require_once가 더 좋아요.PHP 오류 단계를 경고를 표시하지 않는 것으로 조정하면 include의 경고 메시지가 보이지 않고 예측할 수 없는 오류가 발생하기 때문입니다
  • 메서드에서 사용할 때는 _once로 파일을 불러옵니다. 특히 이 파일은 여러 종류나 방법에서 사용해야 할 때_once는 다음 방법에서 같은 파일을 불러올 수 없습니다
  • 리퀴어나 include를 사용할 때 괄호를 사용하지 않는 것이 좋다. 예를 들어 include('xx.php')를 사용할 수 있지만.그것들은 표현식 키워드로 시스템 방법이 아니기 때문에 include'xxx를 직접 사용합니다.php'하면 됩니다.
  • include와 require 파일이 return이 있으면 변수로 retun이 돌아오는 데이터를 받을 수 있고, 비PHP 파일과 원격 파일도 불러올 수 있습니다. (원격 불러오기는 php.ini의 allow_url_include를 On으로 결정해야 합니다.)
    
    file4.php
    <?php
    
    return 'file4';
    
    file4.txt
     
    
    myFile.php
    <?php
    $v = require 'includeandrequire/file4.php';
    echo $v, PHP_EOL; // file4
    
    include 'includeandrequire/file4.txt';
    //  
    
    include 'https://www.baidu.com/index.html';
    //  html 
    
    
    이제 우리는include와require에 대한 이해가 깊어졌지요. 이 두 파일을 불러오는 방식은 복잡하지 않지만 구덩이가 생기기 쉬워요. 특히_once는 방법에서 사용할 때 반드시 주의해야 한다.마지막으로 디렉터리에 있는 모든 파일을 한꺼번에 불러오는 작은 혜택을 줍니다.
    
    function include_all_once ($pattern) {
        foreach (glob($pattern) as $file) { 
            require $file;
        }
    }
    
    include_all_once('includeandrequire/*');
    
    
    테스트 코드:github.com/zhangyue050…
    이상은 PHP에서include와require의 사용에 대한 상세한 내용입니다. PHPinclude와require의 사용에 관한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기