Gerektiren ne iyidir (dirname (__FILE__). '/'. 'MyParent.php') sadece ('myParent.php') gerektiren daha?

4 Cevap php

Şu anda çalışan script aynı dizinde dosyaları da dahil olmak yerine sadece 'myParent.php' WordPress kullanımı dirname(__FILE__).'/myParent.php' gibi ünlü PHP sürü.

Onlar aynı şey değil mi? Neden daha yazarak tercih edersiniz?

Teşekkürler.

4 Cevap

PHP dosyasının mutlak yolunu bilmek gerekiyor. dirname(__FILE__).'/myParent.php' önceden kesin yolu fakat 'myParent.php' 'de verilen yolları kullanarak bir arama gerektiren include_path to get an absolute path and find the file. A better choice would be './myParent.php',

Ancak, Başına açık PHP her türlü talep için geçerli dizinini kontrol sahip daha {[(0)}] kullanmak daha verimlidir.

(Muhtemelen çoğu durumda bir ön-optimizasyon * olan) performans artışı yanında, aynı zamanda bir parçası olarak çevrenin PHP yapılandırma (.) geçerli dizini yok (çok garip) senaryo korur yolunu içerir.

* include include_path değil, göreli bir yol karşı arama gerektiren bir yolu kullanarak Benchmark. 100000 tekrarlamalar her üzerinde test

Sonuçlar

include("include.php"):   8.3664200305939s
include("./include.php"): 8.3511519432068s

(8.3664200305939 - 8.3511519432068) / 100000 = 0.000000152680874s

Eğer dosyaları yüzlerce veya binlerce dahil değilseniz, en iyi ihmal edilebilir 0.0000001s.

Test kod

define("MAX", 100000);

ob_start();
$i = MAX;
$_t = microtime(true);
do {
    include("include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();

echo "include(\"include.php\"):  {$_t}s\n";

ob_start();
$i = MAX;
$_t = microtime(true);
do {
    include("./include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();

Test PHP Version 5.2.9 ile 2.16GHz Macbook 10.5.8 yürütülmüştür (www.entropy.ch 7 Release)

PHP dosya ararken * include_path yineleyemezsiniz çünkü dizinadı + dosya adını kullanarak, biraz daha hızlıdır. Hız önemli ise, büyük olasılıkla daha yazacaktır.

Hakkında ilave bir not ('. / Dosya.php') içerir.

Sadece hız önemli ise, o zaman evet ('. / Dosya.php') dahil kullanabilirsiniz, ancak bağımlılıkları ve göreli yolları sorunları çözmek istiyorsanız, size (__ FILE __) dirname kullanarak daha iyi çünkü

include('./file.php')

hala, betiğin (including script) için göreli yolları inşa ederken

include(dirname(__FILE__).'/file.php');

Bu hat (included komut dosyası) bulunduğu mevcut script göreli yolları çözecektir.

Dirname (__ FILE __) size daha güvenilir dahil bir sürü verirken '. /' Sadece önemsiz bir performans artışı verir beri Genellikle,, dirname (__ FILE __) kullanarak daha iyidir.

/ EDIT: Ayrıca unutmayın ki sadece endişeleri include('./something.php'), yukarıda yapılan kıyaslama size include_path yürüyüş yok çünkü include('something.php') daha hızlı gerçekten, hangi ama kullanmak {[(2 )]} (Eğer sizin include_path bir çok yolları var) include_path yürüyüş daha da yavaş yapar dirname() işlev çağrısı yükü, olsun.