lalalab/autoloadr

该包最新版本(1.0.3-stable)没有提供许可信息。

PHP 自动加载功能

1.0.3-stable 2017-05-29 14:37 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:28:27 UTC


README

PSR-4 提醒

  • 术语 "类" 指的是类、接口、特性以及类似的结构。

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

    \<命名空间名称>(\<子命名空间名称>)*\<类名称>

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

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

通用自动加载器

同时作为常见的 "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();