Aralarında fark var mı? Bunları kullanmak bir tercih midir? Birini diğerinin üzerinde kullanmak herhangi bir avantaj sağlıyor mu? Hangisi güvenlik için daha iyidir?
Aralarında fark var mı? Bunları kullanmak bir tercih midir? Birini diğerinin üzerinde kullanmak herhangi bir avantaj sağlıyor mu? Hangisi güvenlik için daha iyidir?
Yanıtlar:
Ayrıntılı PHP kılavuzunda açıklanan farklılıkları şu sayfada bulabilirsinizrequire
:
require
include
hata dışında aynıdır, ölümcülE_COMPILE_ERROR
seviye hatası da üretecektir . Diğer bir deyişle, komut dosyasını durdurur, ancak yalnızcaE_WARNING
komut dosyasının devam etmesine izin veren bir uyarı ( ) yayar .
Örnek için @ efritz'in cevabına bakınız.
<?php if (isset($flibbertygibbet)) require 'file.php';
bu cevabı tamamen yanlış gösteriyor gibi görünüyor. Aksi takdirde, koşul doğru olmasa da ölümcül bir hata almalıyım. strace
PHP dokunmaya çalışırken bile göstermez file.php
.
if (false) require 'file.php';
'file.php' dosyasının yüklenmesine (ancak yürütülmemesine) neden olacağını iddia eden geçersiz bir talep vardı . TLDR bu yorumların tümünü dikkate almaz.
require
dosya yüklenemezse bir PHP Önemli Hatası atar. (Yürütme durur)
include
dosya yüklenemezse bir Uyarı verir. (İcra devam ediyor)
İşte içerme ve fark gerektiren güzel bir örnek :
Gönderen: Fark gerektirir vs içerir php (Robert; Kasım 2012)
Kullanım include
size komut dosyası (durumunda bu vb yok) dosyasını yüklemeden devam sakıncası yoksa ve siz (siz olmamalıdır rağmen) bir uyarı hata iletisiyle canlı görüntülenen olabilir.
Kullanılması require
, komut dosyanızın belirtilen dosyayı yükleyememesi durumunda duracağı ve Önemli bir hata atacağı anlamına gelir.
Diğerlerinin de belirttiği gibi, tek fark, gerektiren bir ölümcül hata atar ve içerir - bir yakalanabilir uyarı. Hangisini kullanacağım, benim tavsiyem dahil etmek. Neden? çünkü bir uyarı yakalayabilir ve son kullanıcılar için anlamlı bir geri bildirim üretebilirsiniz. Düşünmek
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
Not: örneğin 2 çalışmak için, burada açıklandığı gibi bir hata-istisnalar işleyicisi yüklemeniz gerekir http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
Kod ile çok basit Pratik bir örnek. İlk eko görüntülenecektir. Kullandığınız veya içermediğiniz önemli değil, çünkü içerme veya gerektirmeden önce çalışır.
Sonucu kontrol etmek için, Kodun ikinci satırında kasıtlı olarak dosyaya yanlış yol verin veya dosya adında hata yapın. Böylece ikinci yankı görüntülenecek veya kullandığınız olmadığı konusunda tamamen bağımlı olacak değil gerektiren veya dahil .
Eğer kullanırsanız gerektiren ikinci yankı çalıştırmaz fakat kullanırsanız dahil ne hata çok ikinci yankı sonucunu göreceksiniz gelir meselesi değil.
Programın Dahil Et sonlandırılmaması ve tarayıcıda uyarı görüntülenmemesi durumunda, Gereksinim programı dosyanın bulunamaması durumunda sonlandırılır ve önemli bir hata görüntüler.