alex-robert/autoloadr

此包已废弃且不再维护。未建议替代包。
最新版本(1.0.2-stable)的此包没有可用的许可证信息。

PHP 自动加载功能

1.0.2-stable 2016-07-29 14:22 UTC

This package is not auto-updated.

Last update: 2018-04-19 01:38:08 UTC


README

PSR-4 提醒

  • 术语 "class" 指的是类、接口、特质以及其他类似的结构。

  • 一个完全限定的类名具有以下形式

    <NamespaceName>(<SubNamespaceNames>)*<ClassName>

  • 当加载与完全限定的类名对应的文件时

  1. 在完全限定的类名中,不包括前导命名空间分隔符的连续一个或多个前导命名空间和子命名空间名称(一个 "命名空间前缀")对应至少一个 "基本目录"。
  2. 在 "命名空间前缀" 后的连续子命名空间名称对应于 "基本目录" 内的子目录,其中命名空间分隔符表示目录分隔符。子目录名称必须与子命名空间名称匹配大小写。
  3. 终止的类名对应于以 .php 结尾的文件名。文件名必须与终止的类名匹配大小写。
  4. 自动加载器实现不得抛出异常,不得引发任何级别的错误,并且不应该返回值。

通用 Autoloadr

同时作为公共的 "ClassLoader"(PSR-0)运行
2.: 子目录名称可以是小写。它仍然必须与命名空间名称匹配。
4.: 不抛出异常,但使用 Loggr 进行调试

  • 类名称中的下划线:`

    • \namespace\package\Class_Name 匹配 /prefixe/path/to/namespace/package/Class/Name.php
    • \Mustache_Engine 匹配 /prefixe/path/to/vendor/mustache/src/Mustache/Engine.php
  • 命名空间中的下划线

    • \namespace\my_package\Class_Name 匹配 /prefixe/path/to/namespace/my_package/Class/Name.php
  • 大小写

    • \Ahoy\Core\Request 匹配 /path/to/project/ahoy/core/Request.php
      /path/to/project/Ahoy/Core/Request.php

示例

    $Loadr = new \Autoloadr\Universal();
    
    $Loadr->add_prefix(_ROOT_DIR_ . '/vendor/knot/src');
    $Loadr->add_prefix(_ROOT_DIR_ . '/vendor/scoutr/src');
    $Loadr->add_prefix(_ROOT_DIR_ . '/vendor/mustache/src');

    $Loadr->register();
    
    $K = new Knot\Knot();
    $S = new Scoutr\Scout();
    $M = new Mustache_Engine();