簡體   English   中英

PHP自動加載項目

[英]Php autoload project

我有一個像這樣的項目:

項目

現在,我想自動加載文件夾類和子文件夾中的所有php文件。

我可以這樣:

$dirs = array(
   CMS_ROOT.'/classes',
   CMS_ROOT.'/classes/layout',
   CMS_ROOT.'/classes/layout/pages'
);
foreach( $array as $dir) {
  foreach ( glob( $dir."/*.php" ) as $filename ) {
    require_once $filename;
  }
}

但是我不喜歡這樣。 例如。

“ layout / pages / a.php”擴展了“ layout / pages / b.php”

現在我得到一個錯誤,因為首先加載了a.php。 你們如何加載您的項目文件? 上課嗎

解決了 :)

現在是我的代碼:

spl_autoload_register('autoloader');
function autoloader($className) {
    $className = str_replace('cms_', '', $className);
    $className = str_replace('_', '/', $className);

    $file = CLASSES.'/'.$className.'.php';
    if( file_exists( $file ) ) {
    require_once $file;
    }
}

你應該試試這個

<?php

spl_autoload_register('your_autoloader');

function your_autoloader($classname) {
    static $dirs = array(
      CMS_ROOT.'/classes',
      CMS_ROOT.'/classes/layout',
      CMS_ROOT.'/classes/layout/pages'
   );
   foreach ($dirs as $dir) {
      if (file_exists($dir . '/'. $classname. '.php')) {
          include_once $dir . '/' . $classname . '.php';
      }
   }
}

在使用spl_autoload_register()注冊your_autoloader ,每次您訪問以下類時,PHP解釋器都會調用它:

  • 尚未加載require_once()include_once()

  • 不屬於PHP內部

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM