来自php.ini的自动加载命名课程包括路径



我有一个在项目之外的目录中命名的类。该目录包含在include_path指令中。我想使用spl_autoload类自动加载课程。但是,我只是遇到错误。似乎它只是尝试从项目目录加载文件。

这是一台Windows机器,但我希望它可以在Windows或Linux机器上使用

##incude_path directive##
include_path = ".;C:xamppphpPEAR;C:UsersJoeyDropboxwebglobal_includes;C:UsersJoeyDropboxwebglobal_includesutility;C:UsersJoeyDropboxwebglobal_includesutilityarrayTools"
    //index.php
    require 'bootstrap.php';
    $array = array('Hello','world');
    $array[] = array('Hello','world','2');
    $array[2][1] = array('Hello','world',3);
    echo '<p>The number of dimesions: '.utilityarrayToolsarrayTools::numberOfDimensions($array).'</p>';
    //bootstrap.php
    spl_autoload_register('autoLoader::autoLoad');

    class autoLoader
    {
      public static function autoLoad($file)
      {
          if(is_string($file)){
              if(file_exists("$file.php")){
                  try{
                     include "$file.php";
                  }catch(Exception $exc){
                      echo '<pre><p>'.$exc->getMessage().'</p>'.$exc->getTraceAsString().'</pre>';
                  }
              }
          }
      }
    }

我找到了一种解决方法,但是必须有更好的方法

<?php
//bootstrap.php
spl_autoload_register('autoLoader::autoLoad');
class autoLoader
{
    public static function autoLoad($file)
    {
        if(is_string($file)){
            $path_and_file = self::fileExists($file);
            if($path_and_file !== FALSE){
                include $path_and_file;
            }else{
                //This is for debugging purposes on dev only
                throw new Exception("$file Does Not exsist");
            }
        }else{
            throw new Exception('Classes must be a string');
        }
    }
    protected static function fileExists($file)
    {
        $include_paths = explode(';',get_include_path());
        foreach($include_paths as $path){
            if(file_exists("$path\$file.php")){
                return "$path\$file.php";
            }elseif(file_exists(str_replace('\','/',"$path\$file.php"))){
                return str_replace('\','/',"$path\$file.php");
            }
        }
        return FALSE;
    }
}

相关内容

  • 没有找到相关文章

最新更新