Sunucu tarafında benim include_path I '/ usr / share / armut /' de, bir armut dizine bir başvuru var. Benim uygulamaları içinde ben require_once 'library/file.php'
ile '/ usr / share / armut / library /' yaşayan ortak bir kütüphane dosyaları içerir.
Geçenlerde spl autoloader kullanmaya başladıktan sonra, ben dosyayı eklemek için hangi ile mantığını belirlemek zorunda yükleyici fonksiyonunda fark ettim. Bunu yapmanın ilk yolu, örneğin, başarısız olsaydı @
görmek için bir dosya eklemek için çalışıyor ve bunu bastırmak edildi @include 'library/file.php'
ancak ben @
(I {[tarafından get_include_path
patlayan elle esere kendim yapmaya karar kötü bir uygulama olmakla ilgili bir şey okumak çoğunlukla çünkü düşünüyorum 4)]} ve dizin ben o zaman bir file_exists
yapıyor ve onu dahil olmak istiyorum ne olup olmadığını görerek.
Şöyle:
function classLoader( $class ) {
$paths = explode( PATH_SEPARATOR, get_include_path() );
$file = SITE_PATH . 'classes' . DS . $class . '.Class.php';
if ( file_exists( $file) == false )
{
$exists = false;
foreach ( $paths as $path )
{
$tmp = $path . DS . 'library' . DS . 'classes' . DS . $class . '.Class.php';
if ( file_exists ( $tmp ) )
{
$exists = true;
$file = $tmp;
}
}
if ( !$exists ) { return false; }
}
include $file;
}
spl_autoload_register('classLoader');
Ben yanlış yol gitmek mi? Ben sadece @include
iş yapmış mıyım yoksa doğru yönde biraz bunu yapıyorum?