首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php autoload项目

Php autoload项目
EN

Stack Overflow用户
提问于 2012-12-18 20:14:56
回答 1查看 185关注 0票数 1

我有一个这样的项目:

现在,我想自动加载文件夹类和子文件夹中的所有php文件。

我可以这样做:

代码语言:javascript
复制
$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是首先加载的。你们是如何加载项目文件的?上课?

已解决:)

这是我现在的代码:

代码语言:javascript
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 20:21:33

你应该试试这个

代码语言:javascript
复制
<?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';
      }
   }
}

在向your_autoloader注册spl_autoload_register()之后,每次访问以下类时,php解释器都会调用它:

  • 尚未加载require_once()include_once()
  • 不是PHP内部的一部分
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13940764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档