zoukankan      html  css  js  c++  java
  • PSR规范

    PSR-4

       PSR-4规范描述了一个标准的自动加载器策略,指在运行时按需查找PHP类、接口或Traits。支持PSR-4自动加载器标准的PHP组建和框架,使用同一个自动加载器就能找到相关代码,然后将其载入PHP解释器。有了这个功能,就可以把现代PHP生态系统中很多客户操作的组件联系起来。

    编写一个PSR-4自动加载器

       PSR-4规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和PHP命名空间组织代码,PSR-4规范以来PHP命名空间和文件系统目录结构查找并加载PHP类、接口和Traits,这正是PSR-4的精髓所在。

       下面我们来自己手动实现一个PSR-4自动加载器:

    <?php
    /**
     * 使用SPL组册这个自动加载函数后,遇到下述代码时这个函数会尝试   从/path/to/project/src/Baz/Qux.php文件中加载FooBarBazQux类:
     *  new FooBarBazQux;
     * @param string $class 完全限定的类名。
     * @return void
     **/
    spl_autoload_register(function ($class) {
        // 项目的命名空间前缀
        $prefix = 'Foo\Bar\';
        
        // 目录前缀对应的根目录
        $base_dir = __DIR__ . '/src/';
        
        // 判断传入的类是否使用了这个命名空间前缀
        $len = strlen($prefix);
        if (strncmp($prefix, $class, $len) !== 0) {
            // 没有使用,交给注册的下一个自动加载器处理
            return;
        }
        
        // 获取去掉前缀后的类名
        $relative_class = substr($class, $len);
        
        // 把命名空间前缀替换成根目录,
        // 在去掉前缀的类名中,把命名空间分隔符替换成目录分隔符,
        // 然后在后面加上.php
        $file = $base_dir . str_replace('\', '/', $relative_class) . '.php';
        
        // 如果该文件存在,就将其导入
        if (file_exists($file)) {
            require $file;
        }
    });
  • 相关阅读:
    javaweb快速入门-学习笔记
    初学者如何学习JAVA(本文网摘收藏)
    实施职业发展路线-三界之外无量天
    GUI(图形界面编程)
    selenium IE自动化问题汇总
    python 读取excel数据插入到另外一个excel
    一个简单的查询功能的测试思路
    python os用法笔记
    Python学习笔记(基本功能的使用)
    python 调用封装好的模块
  • 原文地址:https://www.cnblogs.com/mzhaox/p/11288306.html
Copyright © 2011-2022 走看看