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




  • 相关阅读:
    some requirement checks failed
    FTP下载文件时拒绝登陆申请怎么办?
    Linux查看与设定别名
    如何编写shell脚本
    Linux shell是什么
    Linux命令大全之查看登陆用户信息
    Linux命令大全之挂载命令
    论第二次作业之输入输出格式怎么合格(才疏学浅说的不对轻点喷我)
    文件词数统计
    软件工程作业--第一周
  • 原文地址:https://www.cnblogs.com/swing07/p/10061820.html
Copyright © 2020-2023  润新知