SORU
4 EKİM 2011, Salı


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
2 Kasım 2011, ÇARŞAMBA


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 ve spl_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...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HER0R

    HER0R

    16 Aralık 2007
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • SolidWorksTutoriels

    SolidWorksTu

    14 Kasım 2013