先唠叨唠叨一些琐碎的事。本人最早从事.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. vue2.0 仿手机新闻站(五)全局的 loading 组件

    1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...

  2. POJ 3373 Changing Digits

    题目大意: 给出一个数n,求m,使得m的长度和n相等.能被k整除.有多个数符合条件输出与n在每位数字上改变次数最小的.改变次数同样的输出大小最小的.  共同拥有两种解法:DP解法,记忆化搜索的算法. ...

  3. netback的tasklet调度问题及网卡丢包的简单分析

    近期在万兆网卡上測试,出现了之前千兆网卡没有出现的一个现象,tasklet版本号的netback下,vm进行发包測试,发现vif的interrupt默认绑定在cpu0上,可是vm发包执行时发现host ...

  4. C语言的运算符的优先级与结合性+ASCII表

    [0]README 0.1) 内容来源于 C程序设计语言, 旨在整理出C语言的运算符的优先级与结合性, 如下图所示(哥子 记了大半年都没有记住,也是醉了,每次都要去翻): Alert)以下内容转自:h ...

  5. 深入详解WPF ControlTemplate

    WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下WPF ControlTemplate. 其实WPF的每一个控件都有一 ...

  6. shader学习之一:Properties语义块支持的数据类型

    _Int ("Int",Int)=2为:变量名("面板显示的名称",数据类型) 对于Int,Float,Range这些数字类型的属性,默认值为单独的数字.对于贴 ...

  7. 获得手机的ip

    本文转载至 http://blog.csdn.net/showhilllee/article/details/8746114      iosip手机 貌似ASI里获取ip地址的链接不可以了.也曾试过 ...

  8. TP框架---thinkphp修改删除数据

    1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...

  9. npm ERR! fatal: unable to connect to github.com

    https://blog.csdn.net/baidu_30809315/article/details/86520093 git config --global url."https:// ...

  10. 【BZOJ1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Treap+并查集

    [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000) ...