PHP - Nasıl __ autoload içinde değişken kullanmak mümkün () fonksiyonu

0 Cevap php

Ben aşağıdaki gibi kullanıyorum özdevinimli_yükle fonksiyonu: -

function __autoload($moduleName) 
{
     //Logic to check file existence- include if exists else redirect to fallback page
}

Başka herhangi bir argüman almaz? Ben özdevinimli_yükle işlevi içinde bazı değişkenlere dayalı bazı mantık gerçekleştirmek istiyorum. Global değişkenler kullanmadan bunu nasıl yaparsınız?

Teşekkürler

Additional Details

Ben bu __ autoload () sınıf içinde mümkün olmadığını düşünüyorum ama yine de bir örnek ile açıklamaya çalışıyor.

Ben bir dizi var bir modules.config dosyası vardır: -

$viewClassMap =  array('search_classes' => 'commonClassListings',
                       'search_packs' => 'commonPackListings',
                       );

Yukarıdaki dizi bu sınıf commonClassListings search_classes bakış davaya dahil edilmesi anlamına gelir, sınıf commonPackListings search_packs bakış davaya dahil edilmesi oldu. Diğer tüm görünümleri için, varsayılan olarak, commonDisplay sınıf dahil edilecektir

function __autoload($viewName,$viewClassMap) 
{
    if(in_array($viewName,$viewClassMap))
    {
       $viewTobeIncluded = $viewClassMap[$viewName];

       include path/to/$viewTobeIncluded;   
    }
    else
    {
       include path/to/commonDisplay;   
    }
}

Şimdi, autoload işlevi __ iç mantığı dışına gereken ve ilk yüklenecek görünüm hesaplanan ve sonra sadece autoloading çağrılacak gerektiğini düşünüyorum. O (nesne başlatıldı sınıf dosyası dahil) da autoloading amacı budur.

Updates

Benim özdevinimli_yükle fonksiyonu olan nesne I (BLIZZ örneğinde aksine) çalışma zamanında başlatmak için gidiyorum görünümü sınıfının içinde değildir. I ortak froncontroller dahildir bir pageLoader.php dosyasında tanımlanan ortak bir Autoload işlevi vardır. Her modül için, görünüm sınıf gibi initatiated edilir

$view  = new search_classes();

Yani bunu eklemek ve search_classes kendisini görüntülemek ve nesneyi başka bir son çare iniate eğer ortak özdevinimli_yükle fonksiyonu (bu durumda commonClassListings) gelen ana görünüm sınıfını kontrol etmek için vardır mevcut ya da değil, olduğunu. Bunun için ben autoload işlevi $viewClassMap dizi geçmesi gerekiyor. Bu mümkün mü?

0 Cevap