zoukankan      html  css  js  c++  java
  • php composer 使用 以及 psr0和psr4的真正区别

    composer 使用

    项目和库之间唯一的区别是,你的项目是一个没有名字的包

    包名不区分大小写,但惯例是使用小写字母,并用连字符作为单词的分隔

    入门比较好资源:

    官网适合读一遍  https://docs.phpcomposer.com/02-libraries.html

    本地包创建  https://segmentfault.com/a/1190000010891972

    模块化介绍  https://laravel-china.org/articles/5333/modular-development-of-php-based-on-composer

    psr0和psr4的真正区别

    读完官方原文https://www.php-fig.org/psr/psr-0/ 和 https://www.php-fig.org/psr/psr-4/ 发现没区别 本质上真的没区别都是说命名空间对应到目录,

    0比4多了 一条类名的_下划线转换成目录。

    那么4比0多了一个  命名空间前缀和目录的替换关系  当加载类的时候类名空间指定的前缀会被替换成路径再加上后面的子空间和类名 构成实际加载地址。

    而0没有这个对应关系。命名空间直接转换为目录再加上指定的目录前缀构成实际的加载地址。

    psr4

    在composer中的实践,我理解大概是这样的psr4中在composer.json里面配置的映射关系 composer install的时候写入vendor/composer/autoload_psr4.php

    供加载使用。

    {
        "autoload": {
            "psr-4": {
                "Monolog\": "src/",
                "Vendor\Namespace\": ""
            }
        }
    }

    psr0

    在composer中的实践,我理解大概是这样的psr0中在composer.json里面配置的映射关系 composer install的时候写入vendor/composer/autoload_namespaces.php

    供加载使用。

    {
        "autoload": {
            "psr-0": {
                "Monolog\": "src/",
                "Vendor\Namespace\": "src/",
                "Vendor_Namespace_": "src/"
            }
        }
    }
    纤细看下这里 https://docs.phpcomposer.com/04-schema.html#PSR-0

    重点


    包名和命名空间可以不一样。
    我理解vendor会根据composer install vendorname/pkname命令的 vendorname/pkname 自动生成vendorname/pkname目录把代码
    下载到此目录。
    https://github.com/guzzle/promises 空间名称和包名就不一样




  • 相关阅读:
    记忆碎片:我的2007
    查看 Oracle 是用spfile 启动还是 pfile 启动
    Oracle 10g OCP 042 题库 71120 题 共168题
    Oracle OLAP 与 OLTP 介绍
    Oracle Data Guard Switchover 切换
    Linux 终端访问 FTP 及 上传下载 文件
    多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
    Oracle 表连接方式(内连接/外连接/自连接) 详解
    Oracle 表连接方式(内连接/外连接/自连接) 详解
    查看 Oracle 是用spfile 启动还是 pfile 启动
  • 原文地址:https://www.cnblogs.com/swing07/p/10061820.html
Copyright © 2011-2022 走看看