• 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 空间名称和包名就不一样




  • 相关阅读:
    C#之线程
    C#反射与进程
    C# XML文件的读取
    超简单的js实现提示效果弹出以及延迟隐藏的功能
    使用JavaScript随机生成数字混合字母的验证码
    用JavaScript写一个简单的倒计时,可以应用在发送短信验证码的“59秒后重新发送验证短信”
    php中curl、fsockopen的应用
    待研究
    做网站用UTF8还是GB2312?
    ECshop 数据库表结构
  • 原文地址:https://www.cnblogs.com/swing07/p/10061820.html
Copyright © 2020-2023  润新知