• PSR-4 自动加载器


    本文中的关键词 “MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY” 和 “OPTIONAL” 的含义按照 RFC 2119 中的描述来解释。

    一、概述

    这个 PSR 描述了一个从文件路径自动加载类的规范。它是完全互操作的,可以用作任何其他自动加载规范(包括PSR-0)的补充。这个PSR还描述了放置文件的位置,使其根据规范将被自动加载。

    二、规范

    1.术语“类”是指类,接口,特征和其他类似的结构。

    2.完全限定的类名具有以下形式:

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

    1)完全限定的类名必须(MUST)有一个顶级的命名空间名称,也被称为“供应商命名空间”(“vendor namespace”)。
    2)完全限定的类名可以(MAY)有一个或多个子命名空间名称。
    3)完全限定的类名必须(MUST)有一个终止类名。
    4)下划线在完全限定类名的任何部分都没有特殊含义。
    5)完全限定类名中的字母可以(MAY)是小写和大写的任意组合。
    6)所有类名必须(MUST)以区分大小写的方式引用。

    3.加载与完全限定的类名相对应的文件时...
    1)完全限定类名(“命名空间前缀”)中的一个或多个前导命名空间和子命名空间名称(不包括前导命名空间分隔符)的连续序列对应于至少一个“基目录”。
    2)“命名空间前缀”之后的连续子命名空间名称对应于“基目录”内的子目录,其中命名空间分隔符表示目录分隔符。子目录名称必须(MUST)匹配子命名空间名称的大小写。
    3)终止类名对应于以.php结尾的文件名。 文件名必须(MUST)匹配终止类名的大小写。

    4.自动加载器的实现不能(MUST NOT)抛出异常,不能(MUST NOT)引发任何级别的错误,也不应该(SHOULD NOT)有返回值。

    三、示例

    下表显示了与给定的完全限定类名、命名空间前缀和基目录相对应的文件路径。

    完全限定类名命名空间前缀基目录结果文件路径
    AcmeLogWriterFile_Writer AcmeLogWriter ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php
    AuraWebResponseStatus AuraWeb /path/to/aura-web/src/ /path/to/aura-web/src/Response/Status.php
    SymfonyCoreRequest SymfonyCore ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
    endAcl Zend /usr/includes/Zend/ /usr/includes/Zend/Acl.php

    对于符合规范的自动加载器的实现示例,请参阅示例文件。示例实现不得(MUST NOT)被视为规范的一部分,并可(MAY)随时更改。

    原文地址:http://www.php-fig.org/psr/psr-4/

  • 相关阅读:
    <h1><h6>,<head>,<header>,<hr>,<html>标签文档
    <datalist>,<dl>,<dt>,<dd>,<del>,<details>,<div>,<dfn>标签文档
    <fieldset>,<figcaption>, <figure>,<footer>,<form>标签文档
    <b>,<base>,<bdo>,<blockquote>,<body>,<br>,<button>标签文档
    css footer自适应布局
    scss 常用mixins
    <em>,<embed>标签文档
    <canvas>,<caption>,<cite>, <code>,<col>, <colgroup>标签文档
    <a>,<abbr>,<address>,<area>,<article>, <aside>, <audio>标签文档
    SAP:常用的Tcode
  • 原文地址:https://www.cnblogs.com/youlin/p/psr_4.html
Copyright © 2020-2023  润新知