birisi spl_autoload, __otomatik yüklenmesini açıklar ve spl_autoload_register?
Gelişmiş PHP standart öğrenme ve uygular yeni ve faydalı yöntemler için çalışıyorum. Daha önce __autoload
sadece kaçmak için her sayfada birden fazla dosya da dahil olmak üzere kullanıyordum, ama son zamanlarda __autoload manual
bir ipucu vardır gördüm
() spl_autoload_registerdaha esnek bir alternatif sunar özdevinimli sınıflar. Bu nedenle, kullanarak__() otomatik yüklenmesini. cesareti ve gelecekte kaldırılmış kaldırılmış olabilir.
ama gerçekten spl_autoload
nasıl spl_autoload_register
anladım
örnek bana söyle ya da herhangi bir link veriniz.
Teşekkürler.
CEVAP
spl_autoload_register()
PHP "yeni Sınıf" ilan etti. bir zaman yığın/bir sıraya konur ve sırayla çağıracak birden fazla işlevi (veya kendi otomatik yüklenmesini sınıf statik yöntemler) kayıt sağlar
Örneğin:
spl_autoload_register('myAutoloader');
function myAutoloader($className)
{
$path = '/path/to/class';
include $path.$className.'.php';
}
//-------------------------------------
$myClass = new MyClass();
Yukarıdaki örnekte, "Sınıfım" Adı Sınıf çalıştığınız oluşturmak, PHP geçirir bu adı gibi bir dize için spl_autoload_register()
sağlayan, seni almaya değişken ve kullanmak için "Ekle" uygun sınıf/dosya. Sonuç olarak özellikle include/gerektiren bir ifade ile sınıf vardır gerek yok...
Sadece Ara sınıf istediğiniz için başlatılamadı gibi yukarıdaki örnekte olduğu gibi, ve o zamandan beri kayıtlı bir fonksiyon () spl_autoload_register()
) ait olduğunu anlamak tüm sınıfı bulunan PHP kullanacak olan işlevi.
spl_autoload_register()
kullanmanın faydası __autoload()
aksine oluşturduğunuz her dosya otomatik yüklenmesini bir işlevi uygulamak gerek yok. spl_autoload_register()
aynı zamanda birden çok otomatik yüklenmesini fonksiyonları özdevinimli hızlandırmak ve daha da kolaylaştırmak için kayıt sağlar.
Örnek:
spl_autoload_register('MyAutoloader::ClassLoader');
spl_autoload_register('MyAutoloader::LibraryLoader');
spl_autoload_register('MyAutoloader::HelperLoader');
spl_autoload_register('MyAutoloader::DatabaseLoader');
class MyAutoloader
{
public static function ClassLoader($className)
{
//your loading logic here
}
public static function LibraryLoader($className)
{
//your loading logic here
}
spl_autoload, manuel Devletler açısından:
Bu işlev
__autoload()
için varsayılan bir uygulama olarak kullanılmak üzere tasarlanmıştır. Başka hiçbir şey belirtilen vespl_autoload_register()
herhangi bir parametre olmadan çağrılırsa bu fonksiyonları__autoload()
herhangi bir sonraki çağrı için kullanılacak.
Eğer tüm dosyaları tek bir dizin içinde yer alıyorsa daha pratik açısından, ve uygulama sadece kullanır .php dosyaları, ama özel yapılandırma dosyaları .örneğin, o zaman kullanabileceğin bir strateji dizin tüm dosyaları PHP içeren eklemek olacaktır ınc uzantıları yolu (set_include_path()
) vardır.
Ve yapılandırma dosyaları gerektirir beri, spl_autoload_extensions()
PHP aramak istediğiniz uzantıları listesi için kullanırsınız.
Örnek:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');
spl_autoload_extensions('.php, .inc');
spl_autoload_register();
Spl_autoload beri çalıştığınızda spl_autoload arayıp yeni bir sınıf örneğini alacak PHP __autoload()
sihirli yöntemi, varsayılan uygulama.
Bu yardımcı olur umarım...
Nasıl birisi bir iPhone sallıyor seziy...
Birisi HTML5 aria-* öznitelik açıklaya...
Birisi TV izleme kullanmak için doğru ...
Birisi yeni bir programlama dili yazar...
Nasıl birisi hesaplamak'Java yaş ...