programing

require, include, require_once와 include_once의 차이는 무엇입니까?

sourcejob 2022. 11. 4. 23:24
반응형

require, include, require_once와 include_once의 차이는 무엇입니까?

PHP의 경우:

  • 로 하면 요?require ★★include
  • 로 하면 요?require_once ★★include_once

require ★★★★★★★★★★★★★★★★★」include_once뿐만 아니라.

그래서 당신의 질문은...

  1. 로 하면 요?require ★★include
  2. 로 하면 요?require_once ★★require

1에 대한 답은 여기에 설명되어 있습니다.

require() 함수는 include()와 동일하지만 에러를 처리하는 방법은 다릅니다.오류가 발생하면 include() 함수는 경고를 생성하지만 스크립트는 실행을 계속합니다.require()는 치명적인 오류를 생성하고 스크립트는 정지합니다.

2의 정답은 여기에서 찾을 수 있습니다.

require_once() 문장은 require()와 동일합니다.단, 파일이 이미 포함되어 있는지 여부를 PHP가 확인하고 포함되어 있는 경우 다시 포함(필수)하지 않습니다.

사용하다


  • 중요한 메시지 템플릿이나 구성 변수가 포함된 파일 등 응용 프로그램에 필요한 파일이 있으면 응용 프로그램이 중단됩니다.


  • 시 할 수 이 포함되어 : "Data" 또는 "Data" 등).function important() { /* important code */}어플리케이션에는 반드시 필요하지만 기능을 재신고할 수 없으므로 다시 포함시키지 마십시오.

  • 파일이 필요 없는 경우 및 발견되지 않은 경우 애플리케이션 흐름이 계속되어야 하는 경우를 포함합니다.
    를 참조하는 에 적합합니다.

  • include
    두 번 을 포함하거나 시 또는 오버헤드로 인해 하는 경우 HTTP 오버헤드로 인해 두 번 발생하고 않은 을 포함할 수 .

그러나 기본적으로 언제 사용할지는 사용자에게 달려 있습니다.

예요.require_once 99.9%입니다.

「」를 사용합니다.require ★★★★★★★★★★★★★★★★★」include대신 코드는 다른 곳에서 재사용할 수 없습니다. 즉, 끌어오는 스크립트가 클래스나 일부 함수 라이브러리를 사용할 수 있도록 하는 대신 실제로 코드를 실행합니다.

즉석에서 실행하는 코드가 필요하거나 포함되어 있는 경우는, 그것이 순서 코드이며, 새로운 패러다임을 필요가 있습니다.객체 지향 프로그래밍, 함수 기반 프로그래밍 또는 함수 프로그래밍과 같습니다.

, OO를 하세요.include_once대부분의 경우 스택 내에서 버그나 오류가 발견되면 지연됩니다.함수가 다음 중 하나인지 알고 싶으십니까?do_cool_stuff()나중에 전화를 받으러 갈 때 또는 도서관을 요구함으로써 이용할 수 있을 것으로 예상되는 순간에 이용할 수 없습니다.일반적으로 필요한 것이 없을 경우 즉시 알아두는 것이 가장 좋기 때문에 다음 웹 사이트를 이용하기만 하면 됩니다.require_once.

또는 최신 OOP에서는 사용 시 클래스를 자동 로드하기만 하면 됩니다.

한 번 함수와 한 번 함수가 없는 경우의 차이점: 한 번 코드가 없는 경우 다시 포함되지만, 한 번 함수가 있는 경우 PHP는 포함된 파일을 추적하여 한 번만 포함합니다.

require와 include의 차이:필요한 파일을 찾을 수 없는 경우 PHP는 치명적인 오류를 발생시키는 반면 포함의 경우 경고만 발생합니다.

include()파일을 포함할 수 없는 경우 경고가 발생하지만 나머지 스크립트는 실행됩니다.

require()E_COMPILE_ERROR파일을 포함할 수 없는 경우 스크립트를 중지합니다.

include_once() ★★★★★★★★★★★★★★★★★」require_once()파일이 이미 포함되어 있는 경우 두 번째 포함은 되지 않습니다.

다음의 메뉴얼 페이지를 참조해 주세요.

클래스 및 함수 정의를 파일로 정리해야 합니다.

require_once()로드 종속성(예측값, 함수, 상수)을 표시합니다.

require()템플릿과 같은 파일을 로드합니다.

include_once()선택적 종속성(예측값, 함수, 상수)을 로드합니다.

include()옵션 템플릿과 같은 파일을 로드합니다.

2018년 7년만의 답변

이 질문은 7년 전에 제기되었으며, 어떤 대답도 질문에 실질적인 도움을 주지 않습니다.의 PHP PHP를 사용합니다.required_once 클래스를 것은 입니다(자주 자동 를 사용 및 는 모두 가 있습니다).composer.json다른 모든 파일에서 사용할 수 있습니다.)할 수 를 합니다.require_once로딩할 수 있습니다.

가끔 쓸 요.require예를 들어, 매우 큰 어레이 정의를 가지고 있으며 클래스 정의 소스 코드에 추가하지 않을 경우 다음을 수행할 수 있습니다.

 <?php
// arr.php
return ['x'=>'y'];

 <?php
//main.php
$arr= require 'arry.php'

파일이 일부 , .require「」를 사용하고 require_once첫 번째 장소와는 별도로 코드가 실행되지 않거나 변수가 자동으로 시작되지 않아 버그를 정확히 파악하기 어렵습니다.

.include ★★★★★★★★★★★★★★★★★」include_once★★★★★★★★★★★★★★★★★★.

할 때 ★★★★★★★★★★★★★★★★★★★★★★.require_once()는, 1이 필요한 , 에 다른 할 수 .테스트 1 입니다.php를 사용하고 있습니다.

<?php  
echo "today is:".date("Y-m-d");  
?>  

그리고 test2라고 이름 붙인 다른 파일에도 있습니다.php

<?php  
require_once('test1.php');  
require_once('test1.php');  
?>

test1 파일이 두 번 필요한 m을 보고 있지만 파일에는 test1이 한 번 포함되어 두 번째 호출에서는 무시됩니다.그리고 중단 없이 출력이 한 번 표시됩니다.

include_once()를 사용할 때마다 현재 파일에 여러 번 호출된 파일이 필요할 때 파일에 다른 파일을 포함할 수 있습니다.이 예에서는 test3.php라는 이름의 파일이 있습니다.

<?php  
echo "today is:".date("Y-m-d");  
?> 

그리고 내가 test4라고 이름 붙인 다른 파일에.php

<?php  
include_once('test3.php');  
include_once('test3.php');  
?>

test3 파일을 포함한 m을 보고 계시기 때문에 파일은 1회만 포함되지만 이후 실행을 중지합니다.

재사용 가능한 PHP 템플릿에는 "포함"을 사용합니다.필요한 라이브러리에는 "require"를 사용합니다.

"*_once"는 파일이 이미 로딩되었는지 여부를 확인하기 때문에 좋지만, "sys_once"에서만 의미가 있습니다.

차이는 명령에 의해 생성되는 오류에 있습니다.★★★★★★★★★★★★★★★★ require 「」가 됩니다.E_ERROR찾을 수 없는 경우

require() is is is is is is 와 같다include()하고 그것은 인 결과를 .E_ERROR레벨 에러입니다.

include는, 「만들다」만 생성합니다.E_WARNING에러가 발생하고, 어느 쪽인가 하면 사일런트 상태가 됩니다.

따라서 나머지 코드를 작동시키기 위해 파일이 필요하고 스크립트에 오류가 발생할 경우 파일을 사용할 수 없습니다.


★★★의 *_once():

include_once()특정 스크립트 실행 중에 동일한 파일이 여러 번 포함되어 평가될 수 있는 경우에 사용할 수 있으므로 이 경우 함수 재정의, 가변값 재할당 등의 문제를 방지할 수 있습니다.

에도 마찬가지입니다.require_once()물론이야.


레퍼런스: ,

 

  1. 하면 좋을까요?require ★★★★★★★★★★★★★★★★★」include

    require ★★★★★★★★★★★★★★★★★」include는 같은파일을 및는 "Different"와 "Different"입니다.require가 발생한 를 발생시킵니다.반면, 「」는 「파일 로케이션이 무효인 경우, 또는 에러에 발생합니다.」는 「치명적인 에러를 발생시킵니다.include는 경고를 생성하고 코드 실행을 계속합니다.

    이렇게 ''를 사용하시면 됩니다.require포함하려는 파일이 시스템의 심장이고 코드의 나머지 부분에 큰 영향을 미칠 수 있는 경우 기능을 사용할 수 있습니다.include포함하려는 파일이 중요하지 않은 코드를 포함하는 단순 파일일 때 기능을 수행합니다.

    (중요도가 낮은 코드의 경우) 개인적으로 추천하는 것은require코드를 디버깅하고 나중에 모두 교환할 수 있도록 개발 단계 동안 코드의 모든 곳에서 기능합니다.require기능하다include버그를 놓쳐도 최종 사용자에게 영향을 주지 않고 나머지 코드가 정상적으로 실행되도록 운영 환경으로 이행하기 전에 기능을 수행합니다.

  2. 언제 사용하면 좋을까?require_once또는require?

    의 기본적인 차이점require그리고.require_oncerequire_once파일이 이미 포함되어 있는지 여부를 확인합니다.이미 포함되어 있는 경우는, 파일은 포함되지 않습니다만,require파일이 이미 포함되어 있는지 여부에 관계없이 파일이 포함됩니다.

    따라서 몇 가지 코드를 반복해서 포함할 경우require한편, 일부 코드를 코드에 한 번만 포함하려면require_once.

require의 경우 파일이 존재해야 하며 존재하지 않으면 오류가 표시됩니다.include의 경우 파일이 존재하지 않으면 페이지 로드를 계속합니다.

인증과 같은 중요한 부품을 필요로 하며, 기타 모든 부품을 포함합니다.

다중 포함은 설계가 매우 나쁘기 때문에 절대 피해야 합니다.그러니 한 번쯤은 별로 중요하지 않다.

포함 / 동일한 파일을 여러 번 포함할 수도 있습니다.

require()는 include()와 동일하지만 실패 시 치명적인 E_COMPILE_ERROR 레벨 오류가 발생합니다.즉, include()는 스크립트를 정지하고 경고(E_WARNING)만 발행하여 스크립트가 계속 진행되도록 합니다.

필요_1회 / 포함_1회

include/require와 동일하지만, PHP는 파일이 이미 포함되어 있는지 여부를 확인하고, 포함되어 있는 경우 다시 포함(필수)하지 않습니다.

아래와 같은 기능을 사용하고 있었습니다.

function doSomething() {
    require_once(xyz.php);
    ....
}

xyz 단위로 선언된 상수 값이 있습니다.php.

다른 PHP 스크립트 파일에서 이 doSomething() 함수를 호출해야 합니다.

그러나 루프에서 이 함수를 호출하는 동안 동작을 관찰했습니다.처음에는 doSomething()이 일정한 값을 취득하고 있었습니다.xyz.php, 그러나 나중에 매번 반복됩니다.doSomething()에서 선언된 상수 값을 얻을 수 없었습니다.xyz.php.

나는 나의 문제를 해결했다.require_once()로.include(), 갱신되었습니다.doSomething()코드는 다음과 같습니다.

function doSomething() {
    include(xyz.php);
    ....
}

이제 에 대한 모든 반복 호출이doSomething()에서 정의된 상수 값을 가져옵니다.xyz.php.

1 - 파일이 존재하지 않으면 "filename" 및 "filename_once"가 치명적인 오류를 발생시키고 스크립트 실행을 중지합니다.

2 - "syslog" 및 "syslog_once"가 경고를 보내고 실행을 계속합니다.

3 - 이름에서 알 수 있듯이 "filename_once" 및 "filename_once"는 파일이 이미 "filename", "filename_once" 또는 "filename_once"로 포함되어 있는 경우 파일을 포함하지 않습니다.

매뉴얼:

require()와 동일하다include()실패했을 때를 제외하고 그것은 또한 치명적인 결과를 낳는다E_COMPILE_ERROR레벨 에러입니다.즉, 스크립트를 정지합니다.include()는 경고만 발합니다).E_WARNING스크립트를 속행할 수 있습니다.

이 경우에도 마찬가지입니다._once()변종입니다.

include()파일을 찾을 수 없는 경우 경고가 발생합니다.require_once()치명적인 오류가 발생합니다.

또 하나는 이전에 파일이 포함되어 있는지 여부입니다.그리고나서require_once()다시 포함하지 않습니다.

의 시대에PSR-0 / PSR-4오토로더, 필요한 기능/클래스를 코드로 사용할 수 있는 경우(물론 아직 사용할 필요가 있습니다).require_once부트스트랩 파일에 자동 로더 및include템플릿 엔진으로 PHP를 계속 사용하는 경우).

  1. 클래스, 함수 또는 종속성을 로드해야 할 경우 require 함수를 사용합니다.

  2. 템플릿 형식의 파일을 로드하려면 포함 기능을 사용합니다.

그래도 혼란스럽다면 require_1회만 계속 사용하세요.

기본적으로 잘못된 경로가 필요한 경우 PHP는 치명적인 오류를 발생시키고 셧다운 함수를 호출하지만 잘못된 경로를 포함하면 PHP는 실행을 계속하지만 파일이 존재하지 않는다는 경고만 표시합니다.

영어 단어 required에서 PHP는 페이지 또는 파일의 실행이 필요한 파일에 따라 달라진다고 합니다.

제 경험상 구성 파일, 데이터베이스 클래스 및 기타 중요한 유틸리티와 같은 중요한 파일이 필요한 것이 일반적입니다.

그것들은 모두 파일을 포함하는 방법입니다.

Require는 그것이 필요함을 의미합니다.Require_once는 필요하지만 한 번만 필요함을 의미합니다.포함은 파일이 포함되지만 계속하기 위해 필요하지 않음을 의미합니다.

예:

Require 'filename'
Require_once 'filename'
Include 'filename'

include_once 함수도 있습니다.이 함수는 파일을 한 번 포함합니다.

Include_once 'filename'

핸드폰으로 타이핑할 때 대문자는 쓰지 마세요.

include를 사용할 때 include 파일 함수는 포함된 파일에서만 액세스할 수 있습니다.require_once를 사용하면 두 번째 required_once 파일에서 해당 기능을 실행할 수 있습니다.

또한: 추가하기를 권장합니다.

if(file_exists($RequiredFile)){
    require_once($RequiredFile);
}else{
  die('Error: File Does Not Exist');
}

require_once가 페이지를 죽이면 웹 사이트 파일의 디렉토리가 에코될 수 있기 때문입니다.

다음은 파일을 요구하기 위해 만든 커스텀 함수입니다.

function addFile($file, $type = 'php', $important=false){
    //site-content is a directory where I store all the files that I plan to require_once
    //the site-content directory has "deny from all" in its .htaccess file to block direct connections
    if($type && file_exists('site-content/'.$file.'.'.$type) && !is_dir('site-content/'.$file.'.'.$type)){
        //!is_dir checks that the file is not a folder
        require_once('site-content/'.$file.'.'.$type);
        return 'site-content/'.$file.'.'.$type;
    }else if(!$type && file_exists('site-content/'.$file) && !is_dir('site-content/'.$file)){
        //if you set "$type=false" you can add the file type (.php, .ect) to the end of the "$file" (useful for requiring files named after changing vars)
        require_once('site-content/'.$file);
        return 'site-content/'.$file;
    }else if($important){
        //if you set $important to true, the function will kill the page (which also prevents accidentally echoing the main directory path of the server)
        die('Server Error: Files Missing');
        return false;
    }else{
        //the function returns false if the file does not exist, so you can check if your functions were successfully added
        return false;
    }
}

사용 예:

$success = addFile('functions/common');

if($success){
    commonFunction();
}else{
    fallbackFunction();
}

require파일을 찾을 수 없는 동안 다음 줄 실행을 중지하는 치명적인 오류를 생성합니다.

include경고를 생성했지만 파일을 찾을 수 없는 동안 다음 줄 실행을 중지하지 않았습니다.

require_once같은 일을 하다require그러나 파일이 이미 로드되었는지 여부를 확인합니다.

include_once같은 일을 하다include그러나 파일이 이미 로드되었는지 여부를 확인합니다.

주의:include_once또는require_once특정 스크립트 실행 중에 동일한 파일이 여러 번 포함되어 평가될 수 있는 경우에 사용할 수 있으므로 이 경우 함수 재정의, 가변값 재할당 등의 문제를 방지할 수 있습니다.

클라이언트 라이브러리를 조건부로 로드할지, 아니면 사용할지 여부에 따라 로드할지 여부가 종종 결정됩니다.

여기 구체적인 예가 있습니다.pcj가 말한 내용을 자세히 설명합니다.

데이터베이스 사용자 이름과 패스워드(conf.php)를 저장하는 컨피규레이션파일이 있다고 합니다.

<?php
//my site configuration file

//For Database
$location='localhost';
$dbuser='yourname';
$userpw='yourpassword';
$database='nameofdatabase';
?>

또한 데이터베이스를 사용하는 정적 함수가 있는 클래스:

<?php
class UsedInLoop {
    public static function databaseQuery(){
        require(/path/to/conf.php);                //require_once will not work here
        $db = new mysqli($location, $dbuser, $userpw, $database);
        //yada yada yada
    }
}
?>

이 정적 함수는 루프 내에서 반복적으로 호출되는 다른 함수의 내부에서 사용됩니다.

<?php
require_once('path/to/arbitraryObject.php');  //either will likely be OK at this level
$obj = new arbitraryObject();
foreach($array as $element){
    $obj->myFunction();
}
?>

클래스는 1회만 요구/포함할 수 있습니다.루프를 반복할 때마다 해당 루프가 필요/포함되면 오류가 발생합니다.단, 스태틱함수가 호출될 때마다 conf 파일을 포함해야 합니다.

<?php
class arbitraryObject {
    public function myFunction(){
        require_once(/path/to/UsedInLoop.php);   //This must be require_once. require() will not work
        UsedInLoop::databaseQuery();
    }
}
?>

물론 이 문제를 해결하려면 기능 밖으로 옮기는 것이 좋습니다.

<?php
require(/path/to/UsedInLoop.php);   //now require() is fine   
class arbitraryObject {
    public function myFunction(){
        UsedInLoop::databaseQuery();
    }
}
?>

특정 조건에서만 사용할 수 있는 클래스를 로드하는 데 드는 오버헤드가 우려되지 않을 때 로드하고 싶지 않은 경우를 제외하고.

require보다 오버헤드가 크다include먼저 파일을 해석해야 하기 때문입니다.교환requires와 함께includes좋은 최적화 기법인 경우가 많습니다.

require를 사용하고 포함하기만 하면 됩니다.

include_once 또는 require_once를 어떻게 사용할지 생각하기 때문입니다.포함되거나 필요한 PHP 파일을 저장하는 로그 데이터를 찾고 있습니다.따라서 포함 및 요구보다 속도가 느립니다.

if (!defined(php)) {
    include 'php';
    define(php, 1);
}

그냥 이렇게 쓰면...

언급URL : https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once

반응형