先唠叨唠叨一些琐碎的事。本人最早从事.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. Android Studio/IntelliJ IDEA使用手记

      使用第三方jar包 1.将jar包放入项目里的libs文件夹中: 2.在project选中该jar包,点击右键选择:"Add as library": 1. 代码中中文显示乱码 ...

  2. 在Linux里环境变量设置的方法(export PATH)

    一般来说,配置交叉编译工具链的时候须要指定编译工具的路径,此时就须要环境变量设置.比如我的mips-linux-gcc编译器在"/opt/au1200_rm/build_tools/bin& ...

  3. Linux下比较常用的svn命令

    svn: command not found yum install -y subversion 以下是一些常用命令的使用方法,希望对大家有所帮助. 1,check out(co)签出代码 test. ...

  4. Thymeleaf框架

    简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: 1.Thymeleaf 在 ...

  5. WPF学习之深入浅出话模板

    图形用户界面应用程序较之控制台界面应用程序最大的好处就是界面友好.数据显示直观.CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本.列表.图形等多种形式立体显示. 用户体验在GUI程 ...

  6. python 基础 8.5 re 的match对象

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/18 21:49 #@Auther :liuzhenchuan #@File   :match对象.p ...

  7. EasyNVR无插件IPC摄像机直播方案前端构建之:区分页面是自跳转还是分享依据

    区分分享还是跳转 对于前端一些页面的展示,通常有两种方式:通过入口链接一步步进入,或是通过分享链接直接进入:对于这两种方式的区别是什么?在进行前端书写时又应该如何处理? 以EasyNVR为例来进行说明 ...

  8. 子串的索引 str.index(sub) sub必须存在

    ii.lstrip(' ')[0:2]=='//' ii.lstrip(' ').index('//')==0

  9. zookeeper_action

    连接串 从节点列表本地缓存主节点对未分配的任务,随机分配给从节点(不合理??)从节点保存一个本地待执行任务列表单独的线程对节点已分配任务进行循环 进程p为了获锁——>创建节点znode_/loc ...

  10. 我的Java开发学习之旅------>使用循环递归算法把数组里数据数组合全部列出

    面试题如下:把一个数组里的数组合全部列出,比如1和2列出来为1,2,12,21. (面试题出自<Java程序员面试宝典>) 代码如下: import java.util.Arrays; i ...