Sipariş devralır bağlı içerme dosyası

4 Cevap php

İsveç'ten kişi var ve selam Hi!

Ben burada gerçekten zor bir sorun var. Ben tam olarak ne demek göstermeye çalışacağım.

Ben bir modulebased CMS inşa ediyorum ve bazı modüller bir ana modül devralır. Benim sorunum ana modüller "çocuk" önce dahil edilmesi gerektiğidir.

Ben bir XML dosyasından moduleinfo almak ve bu gibi bir dizide saklamak:

Array
(
    [bloggy] => Array
        (
            [module_id] => blog
            [module_name] => Blog
            [module_desc] => Description
            [module_url] => http://www.url.se
            [author] => Dev Name
            [author_url] => http://url.se
            [version] => 1.0
            [inherit] => core|twitter
            [path] => /path/to/file
            [dependon] => Array
                (
                    [0] => core
                    [1] => twitter
                )
        )

Ben bir devralır üzerinde patlayabilir yapılan ve yukarıda gördüğünüz gibi "dependon" içine kurtardım. Sorun şimdi, nasıl ben sıralama hangi dosyaları dahil etmek için. Her modül çekirdek devralır ama başka bir modül depenon dizide varsa o "çocuk" modül sonra dahil edilmelidir.

Ben ne demek istediğimi anlamak umuyoruz?

/ / Tobias

4 Cevap

"Topolojik sıralama" Look up.

Eğer sınıflar gibi modülleri oluşturmak ve daha sonra otomatik olarak / gerekli tüm php dosyalarını gerektiren dahil etmek __ özdevinimli_yükle sihirli işlevini kullanabilirsiniz.

Eğer karmaşık bağımlılıklar olduğunda çok daha az bir baş ağrısı olduğunu yoludur.

Autoloading ilgili ayrıntılar için PHP kılavuzuna başvurun.

Sadece dosyaları tüm bağımlılıkları içerir. Denemek

// module1.php
require_once 'core.php'

// module2.php
require_once 'core.php'
require_once 'module1.php'

// module3.php
require_once 'core.php'
require_once 'module1.php'
require_once 'module2.php'

Module3 dahil ayrıca module2, module1'i ve çekirdek yer alacak. Sen 3 modülünde çekirdek ve module1'i dışarı bırakabilir ve hala hepsini yüklemek istiyorsunuz, ama sonra hangi içerir ne bilmek zorunda.

Ya autoloading kullanımı ve bu konuda rahatsız etmeyin.

Hmm ben biraz daha iyi anlatmaya çalışacağım.

Ben xml bilgi dosyası için modül klasörü aramak ve bir diziye verileri kaydetmek, ben de dizide dosyasının yolunu kaydedin.

Sonra modülleri ve örneğini bir foreach döngüsü kullanın. Benim sorunum ana modüller "çocuk" önce örneği olmasıdır.

Ben, yeni bir modülü eklerken çekirdek dosyaları dokunmak istemiyorum, ben bir ana modülü üzerindeki kanca kullanmanız gerekir.