PHP dosyası "include" için kullanıldığı nasıl anlaşılır

5 Cevap

Dahil işlevini kullanırken PHP dosyası size eklenen eklenen dosyadan anlatmak için bir yoldur? Örneğin, benim kodu ile genellikle aşağıdaki satırı kullanabilirsiniz:

include 'header.php';

Ne PHP dosyası sizi içine konulan header.php den anlamanın bir yolu var mı?

5 Cevap

Yapabileceğiniz tek şey, HTTP isteği işlemek için kullanılan dosyanın adını bulmak. Lütfen içeren tüm bu komut doğrudan dahil ediyorsanız, $_SERVER["SCRIPT_FILENAME"] bu istenen komut için tam yolunu bulabilirsiniz

Ayrıca, örneğin, dosya size dahil belirlemek için dahil kodundaki bir debug_backtrace() kazmak olabilir

$trace=debug_backtrace();

foreach($trace as $t)
{
    if (in_array($t['function'], 
                 array('include', 'include_once', 'require', 'require_once')))
    {
        echo 'Included from '.$t['file']."\n";
        break;
    }
}

The PHP manual lists the get_included_files function, çeşit ne istediğinizi ile ilgili olduğu ... ama one of the comments on that page diyor ki:

Eğer $ _SERVER ['SCRIPT_FILENAME'] veya global benzer başka sunucu kullanabilirsiniz geçerli komut dosyasını içeren bir komut olduğunu bilmek istiyorum.

Dile yerleşik bir şey yok da, size de dahil olmak üzere yaparken kaynak dosyayı söyler değişken ayarlanmış bir kodlama desen kurmak olabilir:

$foo_php_old_includer = $includer;
$includer='foo.php';

include 'header.php'; // uses $includer to discern who is including it

// rest of source file

$includer=$foo_php_old_includer;

Her dosya içinde yukarıdaki gibi bir şey olsaydı, bir her dosya bir dosya dahil o bilemez nerede "yığın include" yaratacak.

Tüm bu ben çözmeye çalıştığınız sorun daha farklı bir metodoloji ile çözülebileceğini şüphelendiğiniz söyleniyor. Eğer biraz anlatabilir misiniz Eğer bu yöntemle çözmeye çalıştığınız sorun SO daha iyi bir çözüm ile gelip yardımcı olabilir.

Bunun için bir değişken olabilir, ama mükemmel bir çözüm değil ...

$CallingFile = 'myfile.php';
include 'header.php';

header.php şimdi denilen kim bilmek değişken $ CallingFile sorgulayabilir.