Blogger Information
Blog 9
fans 0
comment 0
visits 4976
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP商城 Composer 以及PSR规范
>_<的博客
Original
484 people have browsed it

Composer 依赖 在很多php商城系统中都有用到,如dsmall商城。随着项目代码量的不断增加,以及一些库的依赖,我们不得不引入包的管理,来解决不易管理、阅读、模块化等问题。 三方库优秀,而且很多人在维护,功能对接也方便,我们没有必要在这个一个常用的功能上花费时间来封装或者造轮子, 很多人在自己的项目中都实践过,出现了问题,反应的issue也很快会被解决掉,功能也不断在完善。 一直强调,站在巨人的肩膀上,我们会走的更远,也许我们自己撸出来的代码难等大雅之堂,无法比拟, 把重心放在自己的核心产品和功能时间上,学会借鉴学习和使用,降低自己的开发成本。 也许有人会觉得我使用三方库可能会造成性能上的影响,有些功能我根本用不到。项目中代码有很多无用的代码,导致文件加载过慢, 其实不用担心, opcache可以将php脚本预编译到共享内存中来提升php的性能。

php Composer psr-4 autoload

Composer 是php用来管理依赖关系的工具,可以在项目中声明外部依赖的工具库,Composer会帮你安装这些依赖的库文件 psr-4 是一种代码规范,能够实现package的自动加载,规范了如何从文件路径自动加载类,同时也规范了自动加载文件的位置

自动加载

我们在支持Composer的项目中,只需引入这个文件,加上下面这段php的代码,就可以得到自动加载的支持了

<?php

require_once __DIR __ . '/vendor/autoload.php';

复制代码

composer.json

{

    "autoload": {

        "psr-4": {

            "Work\\": "src/"

        },

        "psr-0": {

            "Vendor_Namespace_": "src/"

        }

    }

}复制代码

Composer 将注册一个 PSR-4 autoloader 到 Work 命名空间, PSR-0 则支持_,自动转化为目录结构

classmap

不遵循PSR-0/4规范的类库,

files

明确的指定文件加载

额外的

repositories 自定义资源包库

type

· composer Composer 类型的资源库,是一个简单的网络服务器上的

· vcs git、svn、hg等

· pear 从pear上获取资源

· package 内联一个composer.json对象

scripts

Composer 允许你在安装过程中的各个阶段挂接脚本。

详细流程

典型的命令,composer安装时

· post-install-cmd composer install执行之后触发

· post-update-cmd composer update执行之后触发

自定义脚本demo

{

    "scripts": {

        "post-update-cmd": "MyVendor\\MyClass::postUpdate",

        "post-package-install": [

            "MyVendor\\MyClass::postPackageInstall"

        ],

        "post-install-cmd": [

            "MyVendor\\MyClass::warmCache",

            "phpunit -c app/",

            "find vendor -type d -name .git -exec rm -rf '{}' \\;"

        ]

    }

}复制代码

<?php

namespace MyVendor;

use Composer\Script\Event;

class MyClass{

    public static function postUpdate(Event $event)

    {

        $composer = $event->getComposer();

        // do stuff

    }

 

    public static function postPackageInstall(Event $event)

    {

        $installedPackage = $event->getOperation()->getPackage();

        // do stuff

    }

 

    public static function warmCache(Event $event)

    {

        // make cache toasty

    }

}复制代码

不然看出执行的脚本可以是一个类中的静态方法,当然也可以是一个函数,还可以是一条shell命令

我们也可以手动执行一些命令

composer run-script [--dev] [--no-dev] script

 


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post