结合Composer 新版本PHP的开发方式

转载地址:http://www.aichengxu.com/view/14872结合Composer 新版本PHP的开发方式,有需要的朋友可以参考下。

一、PHP的一些臭历史

Dependency Manager For PHP,Composer。在Composer还没诞生之前,PHP的代码很难被管理。虽然pear社区的支持,许多可重用代码可以通过pear来获得,但是pear在处理代码关联性上非常差,当然还有许多问题。Java领域有Maven工具, .Net 的VS工具集成了NuGet,都是非常好使的关联管理器。但是PHP何去何从?Composer诞生了。它的诞生很大意义上是因为php的3.0版本被普及了,php的命名空间特性让代码包可以在全球级别上具备唯一识别性。当然有人说,我们可以在一个类的命名上做文章也可以做到,但是,会带来许多问题,类名太长,命名重名性高,文件的组织性识别性差等等。PHP根本无法忽略java,.net一直在被使用的package与命名空间的特性,php必须换血。随着php3.0 的普及,通过众多第三方的努力,PHP社区迅猛的积累了许多可用的代码库,起初,大部分代码库都是分享在Github,采用git的方式获取。虽然这个可取,但是关联管理以及操作性上还是比较差。我们需要一个更加简单的具备关联管理的代码库管理工具。Yeah。Composer。

好了,说到这里,或许许多人还很模糊。没关系,我们采用尝试动手,来熟悉Composer。

二、初体验Composer

Composer具体点是什么? 就是一个编译压缩过的phar文件,一个可以执行的工具。

怎么获取?

Linux下

$ curl -sS https://getcomposer.org/installer | php

windows下

C:\Users\username>cd C:\bin
C:\bin>php -r "readfile('https://getcomposer.org/installer');" | php

完了,你可以在控制台下,输入命令 php composer.phar 来获取composer的使用帮助。

下面我们来演示一下,如何使用Composer来创建一个PHP项目

  1. 首先,创建一个项目目录ComposerDemo
  2. 进入目录之后,使用以上命令来获取composer.phar,当然composer是可以全局配置,意思为不需要一个php项目下载一个Composer,而是共用一个Composer
  3. 接下来 调用 php composer.phar init 可以自动创建一个 composer.json文件,当然你也可以手工创建。
{"name": "kendoctor/composer_demo","description": "introduction for how to use composer","minimum-stability": "stable","authors": [{"name": "kendoctor","email": "kendoctor@163.com"}],"require": {}
}

这个文件很重要,它告诉composer如何工作。初始创建的模版,你可以修正一些你的项目的信息。

  • name ,项目名称,命名规则,vendor名称/项目名称
  • description,项目描述
  • minium-stability,版本类型,具体内容参考官方阐述。这里先不作探讨。
  • authors,作者信息。
  • require, 这里可以请求你项目其他的相关php类库或类库包

下面我们来演示Composer的第一个特性,类的自动载入

首先,按照目录结构来创建文件

ComposerDemo/
├── composer.phar
├── composer.json
├── src/
│   ├── models
│      ├── Calculator.php
├── index.php

文件Calculator.php

<?php
/*** Created by JetBrains PhpStorm.* User: Kendoctor* Date: 14-3-19* Time: 上午9:39* To change this template use File | Settings | File Templates.*/class Calculator {public function addNumbers($x,$y){return $x + $y;}
}

我们要使用类Calculator,php老办法就是require这个类文件。事实上,我们在代码中会调用许多类,而这些类都会放到不同的文件中,那样的话,我们需要许多的require。

我们知道index.php可以这么写

<?php
/*** Created by JetBrains PhpStorm.* User: kendoctor* Date: 14-3-19* Time: 上午9:40* To change this template use File | Settings | File Templates.*/require("src/models/Calculator.php");$calc = new Calculator();
echo $calc->addNumbers(10,21);

但是,这不是我们用了Composer想要的。我们要的效果是,实例某个类,它会自动载入。那,怎么搞呢?

修改Composer.json

{"name": "kendoctor/composer_demo","description": "description_text","minimum-stability": "stable","authors": [{"name": "author's name","email": "email@example.com"}],"autoload":{"classmap": ["src/"]}}

require这个属性被我删除了,稍等我们再来介绍其特性。首先这里引入一个autoload属性,可以自动加载类或命名空间的特性属性。classmap属性定义要引入的哪个目录下的类,或者直接可以是类文件。我们这里指定src目录下所有的类文件。修改之后,我们要通过composer命令来更新一下目录结构内容,很简单

php composer.php dump-autoload

完了会自动产生目录vendor,里面许多自动产生的内容,不过这里,我们只需要关注autoload.php这个文件。我们在index.php只需要引入这个文件就可以了

<?php
/*** Created by JetBrains PhpStorm.* User: kendoctor* Date: 14-3-19* Time: 上午9:40* To change this template use File | Settings | File Templates.*/require("vendor/autoload.php");$calc = new Calculator();
echo $calc->addNumbers(10,21);

如果你又新添加了一个User到models目录下,那你无需要做其他工作,就可以直接在index.php文件中直接调用此类了。

结合Composer 新版本PHP的开发方式相关推荐

  1. composer 设置版本号_Composer依赖管理 – PHP的利器

    别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基本上是标配.Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm.PHP 的则是 PEAR,不过 ...

  2. VMware View Composer 虚拟机映像管理

    View Composer作为VMware VDI解决方案View中全新功能,它使用 VMware 的带链接的克隆技术,通过主映像来快速创建桌面映像,不再需要为每个桌面创建完整映像. 使用传统 VDI ...

  3. 部署环境_Hyperledger Fabric Composer环境部署(一)

    声明:本体系Hyperledger Fabric Composer相关分享都是基于MacPro进行多次亲测和体验.今天我这里主要介绍的是这些先决条件安装完成后,如何搭建和使用一个基础环境的问题,适合有 ...

  4. composer升级_Composer 使用姿势与 Lumen 升级指南

    Composer 使用姿势 这里主要说说 composer.json 和 composer.lock 文件的作用. composer.json composer.json 文件包含了项目的依赖和其它的 ...

  5. Composer帮你轻松管理PHP包 autoload

    在PHP包管理上面,PHP发展的很缓慢,导致的结果就是很少发现程序员会使用像PEAR这样的工具.相反,大多数开发人员会选择他们自己喜欢的框架来处理代码,比如DB交互.ORIM'S.Oauth.Amaz ...

  6. 快速迭代的开发方式中的QA实践方法

    背景 尽管"小步快跑"的快速迭代开发方式早已成为互联网软件开发的主流指导思想,但大量开发团队在落地这一开发方式时最常遇到的问题就是"如何QA",因为,传统软件行 ...

  7. 漏洞10年深藏不露,PHP 项目依赖关系管理工具Composer安全吗?

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  8. composer:php的依赖管理工具

    phpcomposer PHP 5.3.2+ Composer 不是一个包管理器,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装.默认情况下它不会在全局安装任何东西 ...

  9. 区块链 Hyperledger Composer 使用教程(环境搭建、项目开发 一)

    Hyperledger Composer使用教程 基本概念介绍 1. 欢迎来到Hyperledger作曲家 Hyperledger Composer是一个广泛的,开放的开发工具集和框架,可以使开发区块 ...

最新文章

  1. ERICA:提升预训练语言模型实体与关系理解的统一框架
  2. Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)
  3. DCMTK:DIMSE状态代码和类的测试程序
  4. MacOS 常用终端命令大全
  5. 上古卷轴5json文件修改_【白夜谈】我做了一款失败的《社长卷轴》Mod
  6. RabbitMQ学习笔记-RabbitMQ深入理解
  7. r语言数据变量分段_使用R语言实现数据分段
  8. Android doc译文|Building Apps with Content Sharing|Sharing Simple Data
  9. asp.net 学习交流群 130017551
  10. 二叉树的所有路径(LeetCode 257)
  11. R语言金融基础:tidyquant获取数据(标普500与纳斯达克)
  12. maven 构建spring boot + mysql 的基础项目
  13. 7000个源码批量下载---复制来的
  14. 一、「下载JDK」「配置JDK」「下载JDK文档」
  15. 技术发展杂谈——RTC、WebRTC、VP9(2018年的文章)
  16. CPU内部原理,一文解析
  17. 为什么微博超话显示服务器有点累,微博超话帖子被吞是什么原因?使用时,注意这些事项...
  18. 信号处理基本概念:单位脉冲响应和单位阶跃响应
  19. 电脑wifi网络连接,可以上QQ和微信但是无法浏览器无法使用解决方法
  20. python开始_开始Python的新手教程

热门文章

  1. 浏览器弹窗怎么设置显示url_谷歌浏览器Chrome76版本地址栏不显示HTTPS和WWW怎么办?...
  2. C# 隐藏TabControl头
  3. 动态规划(五)——0/1背包
  4. Vue——vue-resource
  5. mysql 单数据库设置编码,mysql数据库编码设置
  6. 用matlab绘制P三曲线,知道曲线方程 怎么用matlab绘制三维图 一定要给出程序 , matlab怎样画三维曲线...
  7. C语言自学《三》---- 条件判断
  8. oracle developer 连接 mysql
  9. Linux apache编译安装
  10. 学习STP的一些总结