Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php自动加载项目_Php_Include_Project_Require_Autoload - Fatal编程技术网

Php自动加载项目

Php自动加载项目,php,include,project,require,autoload,Php,Include,Project,Require,Autoload,我有一个这样的项目: 现在我想自动加载文件夹类和子文件夹中的所有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

我有一个这样的项目:

现在我想自动加载文件夹类和子文件夹中的所有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';
      }
   }
}
您应该试试这个

<?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';
      }
   }
}

我认为您误解了“自动加载”的概念:-此资源可能也很有用:如果您直接撞到墙,它并不总是好的。可能先看一下PHP手册,再看看并思考一下如何将类名映射到文件名。我认为您误解了“自动加载”的概念:-此资源可能也很有用:如果您直接运行到墙中,它并不总是好的。可能先看一下PHP手册,再看看并思考一下如何将类名映射到文件名。谢谢!那是我提出的一个愚蠢的问题。我可以自己想出来,但没有时间。非常感谢hek2mgl!:)谢谢那是我提出的一个愚蠢的问题。我可以自己想出来,但没有时间。非常感谢hek2mgl!:)