Yollar ne zaman dahil olmak üzere ve talep AJAX

1 Cevap php

Bulunan veya AJAX tarafından talep edilmesi gereken her dosyadan (index.php yatıyor) ana klasörüne göre bir yol yapmanın bir yolu olup olmadığını merak ediyordum.

AJAX ve PHP, PHP ile sayfa yükler böylece ilk kez dahil birleştirmek ve daha sonra AJAX ile sayfanın bölümlerini yenilemek mümkün olmak istiyorum, ama dosyalar aynı ve alt klasörler içinde yalan vardır.

Ben yolu ile problem yaşıyorum ve ben mutlak bir yolunu ayarlayabilirsiniz rağmen, o zaman ben her zaman sunucu değişiklikleri değiştirmek zorunda. Bu bir takma ad ile çalışmaz, çünkü benim bir proje, ama document_root değil nerede göreli bir yol istiyorum. (Ya da bunu takma adları ile çalışmak nasıl biliyor musunuz?)

Teşekkürler!

EDIT* Here is how my directory structure looks:

[Main_dir] / index.php - ana dizin dosyası

[Main_dir] / phpinc - sadece çalışmak (onlara hiçbir AJAX arama) dahil - php dosyalarını içerir

[Main_dir] / modules - modüller sayfanın bölümleri vardır, ya PHP ile dahil edilebilir veya AJAX (onlar ayrı bir HTML dosyası olarak yüklenir, fark etmez her yerde aradı, böylece PHP yolları nerede göredir Modül Fiziksel olarak yer almaktadır.

PHP bunları eklediğinizde, normal (index.php onları dahil çünkü) [main_dir] yol alacak

Yani benim sorunum: modül dosyalarından ben phpinc klasöründe bazı dosyaları dahil etmek istiyorum, ama bu olabilir belki .. / phpinc / file.php veya phpinc ya / file.php.

Sadece koyarak daha zarif bir yolu var mı bir

if (is_dir("phpinc")) {
 $inc_path = "phpinc";   
} else if (is_dir("../phpinc")) {
 $inc_path = "../phpinc";
}

at the beginning of each module?
Hope this clarification is good enough.

1 Cevap

PHP'nin autoloader kullanmayı teklif ediyorum:

Ben bu yöntemi vardır bir sınıf CAutoloadManager oluşturuldu:

static public addRepositoryForFilePattern( String $aPath, String $sPattern ) {}

Ben çağrı index.php içinde

AutoloadManager::addRepositoryForFilePattern( './actions/', 'C*Action.inc.php' );
AutoloadManager::addRepositoryForFilePattern( './includes/', '*.inc.php' );

İlk CShowWelcomeAction.inc.php veya CLoginAction.inc.php gibi isimler için /. / eylemler bir sınıf bulmak için denemek için autoload talimat. CAutoloadManager arandı. / Diğer sınıflar için / içerir.

PHP'nin özdevinimli_yükle () işlevi aşağıdaki gibi kullanılır:

function __autoload($class_name) {

    include $class_name . '.php';

}

PHP bir sınıf yüklenmemesi her zaman onu çağırır.

GÜNCEL, bu çok güzel çalışıyor - yalnızca sınıflar için olsa.