Sınıf Tanımlı nerede (zamanında) PHP Dosya Bulma

2 Cevap php

Belirli bir sınıf (ya da işlev) tanımlanan PHP dosyasını bulsun PHP'nin herhangi bir yansıma / introspection / büyü var mı?

Diğer bir deyişle, ben bir PHP sınıfı adını, ya da bir örneği nesne var. Ben sınıf tanımlanmış dosya sistemi yolunu dönecekti something (fonksiyonu, Yansıma sınıf, vb) bu ​​geçmek istiyorum.

/path/to/class/definition.php

Ben şimdiye kadar ve daha sonra elle hepsini ayrıştırmak dahil olan tüm dosyaların bir listesini elde etmek için (get_included_files()) kullanabilirsiniz fark, ancak bu tek bir girişim için dosya sistemi erişimi bir çok şey.

Ben de bir yerde bu bilgileri önbelleğe bizim __ özdevinimli_yükle mekanizması bazı ek kod yazabilirsiniz biliyoruz. Ancak, mevcut __ autoload değiştirerek aklımda durumda sınırlar kapalı.

Bu ilginç olurdu yapabileceğiniz uzantıları hakkında işitme, ama sonuçta install "stok" üzerinde çalışabilir bir şey istiyorum.

2 Cevap

Denemek

Örnek:

class Foo {}
$reflector = new ReflectionClass('Foo');
echo $reflector->getFileName();

Bu false dönecektir dosya bulunamadığı zaman, örneğin yerli sınıfları.

Eğer bir klasör içerir olsaydı, sen yaparak "class $ Sınıfadı" için "grep" için bir kabuk komut dosyası komutunu çalıştırmanız olabilir: $filename = `grep -r "class $className" $includesFolder/* `ve o was in dosya hangi dönecekti Bunun dışında, i Senin için bunu yapmak için PHP için herhangi bir sihirli işlevi olduğunu sanmıyorum.