• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • spl_autoload_extensions()

    (PHP 5 >= 5.1.0, PHP 7)

    注册并返回spl_autoload函数使用的默认文件扩展名。

    说明

    spl_autoload_extensions([string $file_extensions]): string

    本函数用来修改和检查__autoload()函数内置的默认实现函数spl_autoload()所使用的扩展名。

    参数

    $file_extensions

    当不使用任何参数调用此函数时,它返回当前的文件扩展名的列表,不同的扩展名用逗号分隔。要修改文件扩展名列表,用一个逗号分隔的新的扩展名列表字符串来调用本函数即可。中文注:默认的spl_autoload函数使用的扩展名是".inc,.php"。

    返回值

    逗号分隔的spl_autoload()函数的默认文件扩展名。

    The order of the extensions influence the velocity of the reply. For example: 
    spl_autoload_extensions(".php, .inc");
    is more fast than:
    spl_autoload_extensions(".inc, .php");
    Check out this example:
    Some class files:
    ClassA.php
    <?php class ClassA { var $val = 'Hello from class "ClassA"'; } ?>
    ClassB.php
    <?php class ClassB { var $val = 'Hello from class "ClassB"'; } ?>
    ClassC.php
    <?php class ClassC { var $val = 'Hello from class "ClassC"'; } ?>
    ClassD.php
    <?php class ClassD { var $val = 'Hello from class "ClassD"'; } ?>
    ClassE.php
    <?php class ClassE { var $val = 'Hello from class "ClassE"'; } ?>
    1. Simple:
    <?php
    // default priority: .inc .php
    for($n=65; $n<70; $n++) {
      $className = 'Class'.chr($n);
      spl_autoload($className);
      $ins = new $className;
      echo $ins->val.'<br>';
    }
    // 4.2 miliseconds
    ?>
    2. Change priority:
    <?php
    spl_autoload_extensions('.php,.inc');
    // new priority: .php .inc
    for($n=65; $n<70; $n++) {
      $className = 'Class'.chr($n);
      spl_autoload($className);
      $ins = new $className;
      echo $ins->val.'<br>';
    }
    // 1.4 miliseconds
    ?>
    
    Extensions doesn't have to start with a dot, spl_autload() will simply append whatever you supply to the basename. The following example will try to load "test.php" first, and "test/index.php" as well:
    spl_autoload_register('.php,/index.php');
    spl_autoload('Test');