先唠叨唠叨一些琐碎的事。本人最早从事.Net开发,后来处于好奇慢慢转到了php,因为.net从一早就使用了命名空间(反正从我使用就存在这玩意了),所以在转php时很自然的就使用了命名空间,但是在使用过程,发现php的use和.net中的using完全不是一个概念。

一、学习composer前的历程

  1、在.net中,若调用某个类,直接using 命名空间.类名即可;而php中虽然有命名空间这玩意,你也可以use 引入命名空间,但若想调用某个类,则必须require或include。说实话,刚开始觉得特别特别的别扭,差点让我对php失去好奇。

  2、随着学习的深入,发现了php中的__autoload(),这个函数能实现类的自动加载,即在初始化类时,若未找到该类文件,则调用__autoload()方法,这样我们就能很轻松的在__autoload()方法中使用require或者include了;后来又发现了一个spl_autoload_register,这个函数其实就是注册__autoload()方法,当然你也可以注册自定义的方法,而且可以注册多个。

  3、后来在使用laravel框架时,发现该框架是使用Composer来管理依赖以及自动加载的,于是就学习了下Composer。

二、composer安装。

  1、下载、安装composer,在终端执行:curl -sS https://getcomposer.org/installer | php 。命令执行完毕后,会在当前目录下下载一个composer.phar

  2、检查composer是否能正常工作,在终端执行:php composer.phar。

  3、设置全局命令,在终端执行:mv composer.phar /usr/local/bin/composer

  4、查看composer版本:composer -V

以上四步则完成了composer安装。

三、如何使用composer来管理依赖呢?假设我们要创建一个demo的项目,在demo文件夹下创建composer.json文件,在composer.json中定义项目的依赖。

  1、假设你的项目需要依赖三方monolog,则在composer.json中写:

  { "require":

    {

      "monolog/monolog": "1.2.*"

     }

  }

  2、下载依赖到你的本地项目:composer install。将会创建 vendor/monolog/monolog 目录并下载三方组件。扩展:install 将会创建一个composer.lock文件,该文件会于composer.json同一目录层级(即根目录下)。在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件,锁定该项目需要依赖组件的版本,这样能保证所有开发人员能使用一致的组件。当然要是你想更新组件的版本,则可以使用:composer update;若只想更新某个组件,则可以使用:composer update monolog/monolog

四、composer自动加载。

  1、若要实现项目中的类自动加载,很简单,只要在项目入口文件中率先引入autoload.php文件即可:require 'vendor/autoload.php';

  2、你可以在 composer.json 的 autoload 字段中增加自己的 autoloader(定义要加载的命名空间与具体路径的键值对)。

  "autoload": {

    "psr-4": {"App\\": "app/"}

  }

  添加完毕以后,需要再次执行:composer install,自定义的autoloader才生效。

  此时,我们可以在项目创建app文件夹,假设我们还创建A类、B类,两个的命名空间我们设定为App。我们要在A类中调用B类,只需要在A类中use App\B 即可

到此,Composer的基础应用算告一段落,若还有补充则会另开一篇。

Composer基础应用1的更多相关文章

  1. Composer基础

    摘要 本文介绍Composer的入门知识,包括require和autoload部分. Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发 ...

  2. 这一次,真正掌握composer

      思维导图 composer是现代PHP的基石 现代高级编程语言,依赖管理工具是必不可少的.Java有Maven,Python有pip,Nodejs有npm, 而在composer出现之前,PHP只 ...

  3. VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器

    VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...

  4. VMware vSphere 服务器虚拟化之十六 桌面虚拟化之VMware Horizon View

       VMware vSphere服务器虚拟化之十六 桌面虚拟化之VMware Horizon View  VMware Horizon View (原VMware View的升级版现在版本5.2)是 ...

  5. Yii2中如何使用CodeCeption

    Yii2和CodeCeption CodeCeption是一个全栈的PHP测试框架,关于CodeCeption的介绍见:CodeCeption官方文档. Yii2官方增加了对CodeCeption的支 ...

  6. swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?

    date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...

  7. 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备

    『Composer 一统天下的时代已经到来!』——白岩松 “一个时代结束了,另一个时代开始了.” Framework Interoperability Group(框架可互用性小组),简称 FIG,成 ...

  8. 基于Composer Player 模型加载和相关属性设置

    主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...

  9. 在linux上如何通过composer安装yii

      Composer可以理解成一个依赖管理工具 它能解决以下问题 a) 你有一个项目依赖于若干个库. b) 其中一些库依赖于其他库. c) 你声明你所依赖的东西. d) Composer 会找出哪个版 ...

随机推荐

  1. 转:DDR中端接技术基本概念

    DDR中端接技术基本概念  版权声明:转载请注明出处:http://blog.csdn.net/lg2lh https://blog.csdn.net/lg2lh/article/details/90 ...

  2. msgsnd的一个小问题

    今天写了一个System V消息队列的小样例.定义了一个例如以下的结构体: #define MSG_SIZE 8192 struct request { long mtype; int client_ ...

  3. XXE攻击

    1.背景 现在很多应用都存在XXE(XML External Entity attack)漏洞,就是xml外部实体攻击,比如facebook,很多XML的解析器默认是含有XXE漏洞的. 2.xml的定 ...

  4. jQuery--基础(查询标签)

    浅谈jQuery使用背景 jQuery是使用原生js写成的一个库,使用简单,提高开发效率.在用js冗杂的代码解决的问题中,大部分都可以用jQuery来快速解决. 例如: js中查询网页中ID为&quo ...

  5. opencl教程

    http://www.altera.com.cn/corporate/news_room/releases/2013/products/nr-opencl-sdk-13.0.html http://w ...

  6. NativeBase自定义组件样式

    http://nativebase.io/docs/v0.5.13/customize#themingNativeBaseApp 对于NativeBase中的组件,我们可以根据实际需要来进行自定义组件 ...

  7. 写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。) 给定一个表达式A,请返回一个bool值,代表它是否合法。

    这道题比较奇怪,它的匹配规则并不是我们平时想想的那种匹配规则,例如:平时的匹配规则是().{}.[]才能匹配,本题中(和} .].)都能匹配.所以做题时要好好审题.另外,本题中给的测试用例是错误的. ...

  8. Centos 6.X noVNC+websockify 实现webvnc

    文章参考:https://github.com/kanaka/noVNC http://www.cnblogs.com/yanghuahui/p/3574388.html 工作原理: noVNC 可以 ...

  9. 将到来的战略转变:移动 Web 还是移动 Apps?

    目前来看,移动应用比移动网站的易用性更高,但变化即将发生,移动网站最终将优于Apps,成为更好的策略选择. 一家公司制定移动策略时,最重要的问题是:是否需要考虑为移动设备特别做点什么.一些公司永远都不 ...

  10. 转载 ---原生和H5交互挺多的,最近也有朋友再问。这儿我写个简单的例子给大家 直接贴代码 js的

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> ...