Eğer sınıf konumlarının açık tanımlarını düşündünüz mü? Bazen ilişkili sınıflar için anlamda bir çok yapar.
İşte ele kanıtlanmış bir yoludur.
Bu kod yerleştirilen bir auto_prepend_file
(veya ilk dahil)
class Import
{
public static $_AutoLoad = array();
public static $_Imported = array();
public static function Load($sName)
{
if(! isset(self::$_AutoLoad[$sName]))
throw new ImportError("Cannot import module with name '$sName'.");
if(! isset(self::$_Imported[$sName]))
{
self::$_Imported[$sName] = True;
require(self::$_AutoLoad[$sName]);
}
}
public static function Push($sName, $sPath)
{
self::$_AutoLoad[$sName] = $sPath;
}
public static function Auto()
{
function __autoload($sClass)
{
Import::Load($sClass);
}
}
}
Ve önyükleme dosyası, sınıfları tanımlamak ve onlar içeri ne dosyası
//Define autoload items
Import::Push('Admin_Layout', App::$Path . '/PHP/Admin_Layout.php');
Import::Push('Admin_Layout_Dialog', App::$Path . '/PHP/Admin_Layout.php');
Import::Push('FileClient', App::$Path . '/PHP/FileClient.php');
Ve son olarak, arayarak AutoLoad etkinleştirin
Import::Auto()
Güzel şeylerden biri "Modülleri" tanımlayabilirsiniz ki:
Import::Push('MyModule', App::$Path . '/Module/MyModule/Init.php');
Gerektiğinde Ve sonra açıkça onlara yük:
Import::Load('MyModule');
Ve en iyi parçalarından biri size zamanında kendi sınıflarının tüm tanımlayacak modülünde ek Import::Push
hatları, sahip olabilirsiniz.