composer+psr-4实现自动加载】的更多相关文章

1.使用命令composer init生成composer.json文件,并编辑autoload选项内容如下: 其中又包含主要的两个选项: files 和 psr-4. files就是需要composer自动帮我们加载的函数库(不含类),只要在后面的数组中将函数库的文件路径写入即可.psr-4顾名思义,是一个基于psr-4(http://www.php-fig.org/psr/psr-4/)规则的类库自动加载对应关系,只要在其后的对象中,以 "命名空间": "路径"…
我们在开发项目中会经常用到第三方的类库插件,但是如果每次需要使用的时候都会在代码的某一处去引入,然后在实例化,这样做感觉很不方便,那么怎么实现自动加载呢,下面简单介绍使用composer实现自动加载: 原文地址:小时刻个人博客>http://small.aiweimeng.top/index.php/archives/11.html 1.首先需要安装composer安装地址(中国镜像): https://pkg.phpcomposer.com/#how-to-install-composer根据…
深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于…
PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于 PSR 规范的提出. 原文:https://segmentfault.com/a/1190000014948542 大纲: PHP 自动加载功…
composer的出现真是让人们眼前一亮,web开发从此变成了一件很『好玩』的事情,开发一个CMS就像在搭积木,从packagist中取出『积木』搭建在自己的代码中,一点一点搭建出一个属于自己的王国.从此以后我基本就抛弃了require和include函数,一个项目中,这两个函数只可能出现一次,那就是require '../vendor/autoload.php'.那么,既然抛弃了传统的文件包含方法,我们使用所有类库都将用namespace和composer自带的autoload.可是,我们自己…
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer的安装非常的容易 1.下载安装脚本,这里把安装脚本保存为 composer-setup.php [root@localhost composer]# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.p…
简介 一般在框架中都会用到composer工具,用它来管理依赖.其中composer有类的自动加载机制,可以加载composer下载的库中的所有的类文件.那么composer的自动加载机制是怎么实现的呢? composer 自动加载原理 以在Laravel框架中为例: 首先在入口文件(/public/index.php)中引入了autoload.php require __DIR__.'/../vendor/autoload.php'; 我们看看autoload.php的内容 require_o…
有的时候需要手工下载php的composer包 1.将下载好的包放到项目的vendor目录下,比如包名:pinguo/php-aop 2.然后查看软件包目录(vendor/pinguo/php-aop)下的composer.json文件,找到autoload, 这个key下面的配置就是该软件包里的类所需的自动加载类, 把里面的配置都复制到项目根目录下的composer.json的autoload下, 复制过来的配置需要修改相对路径,不然找不到相应的类文件. 3.在项目根目录下执行命令compos…
注意:这里只是针对于非Composer 安装包的自动加载的实现,能用composer安装的自动跳过. 由于ThinkPHP5.1 严格遵循PSR-4规范,不再建议手动导入类库文件,所以新版取消了Loader::import方法以及import和vendor助手函数,推荐全面采用命名空间方式的类以及自动加载机制,如果必须使用请直接改为php内置的include或者require语法. 以下以钉钉官方的SDK为案例(由于钉钉官方没有像阿里云那样直接可以使用composer直接安装). 当然Githu…
在 PHP 代码的顶部你是不是经常看到这样的代码. require 'lionis.php'; require 'is.php'; require 'cool.php'; 如果只是引入几个 PHP 脚本,那还可以接受.那引入成千上万个脚本的时候,爆炸是在所难免的.如果对一个脚本改了个名字,还需要对引入改脚本的每个脚本改名,能不爆炸吗?连打出这段话都怎么绕. 电气时代 在 PHP 电气时代,开始出现了 __autoload 和 spl_autoload_register 函数注册自定义的自动加载策…
一直在用 composer,最近想看一下具体的原理是什么,就仔细阅读了一下源码,一下是个人理解.在看该文章前最好了解一下 PSR-4 自动加载规范 引入类自动加载文件 # 加载类自动加载文件 require __DIR__.'/../vendor/autoload.php'; # autoload.php 入口文件 require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInit8ff9bdcc…
composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具库,Composer就会帮你安装这些依赖的库文件.运行 Composer 需要 PHP 5.3.2+ 以上版本. 使用composer 第一步,声明依赖关系.比方说,你正在创建的一个项目需要一个库来做日志记录.你决定使用 monolog.为了将它添加到你的项目中,你所需要做的就是创建一个 compo…
本篇博客承接上一篇,学习一下Composer实现的PHP的类的自动加载方式.首先说明一下,Composer是PHP针对PHP语言的第三方的依赖管理工具,将工程所用到的依赖文件包含在composer.json文件中,使用composer install命令就可以将所使用对应库或者文件加载进工程里面.下面分两部分介绍composer的基础,分别是composer的依赖管理和自动加载. 依赖管理 在composer出现之前,如果咋PHP项目中需要第三方的依赖文件,则需要程序员将所需要的源代码拷贝进工程…
本文转自: https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED"). "将会"("SHALL")."不会"("SHAL…
最近要使用RabbitMQ 做消息队列,也是刚接触到.因为用的的TP框架,comoser又下载不下来,所以只能手动下载拓展包,做手动加载,在php-amqplib是我手动下载下来的拓展包,创建一个composer.json文件,在里面输入 { "name": "php-amqplib/php-amqplib", "replace": { "videlalvaro/php-amqplib": "self.version…
github地址 https://github.com/brady-wang/composer composer init 可以生成一个composer.json文件 { "name": "brady/learn", "description": "this is my learn", "require": { "php":"^7.0.0", "monolo…
Composer提供了四种方式的支持,分别是 PSR-0和PSR-4的自动加载(我的一篇文章也有介绍过它们),生成class-map,和直接包含files的方式. PSR-4是composer推荐使用的一种方式,因为它更易使用并能带来更简洁的目录结构.在composer.json里是这样进行配置的: 1 2 3 4 5 6 7 {     "autoload": {         "psr-4": {             "Foo\\": …
composer作为PHP的包管理工具,让PHP可以使用命名空间, 载入对应的类文件,不用理会文件引入的路劲问题,代码可读性也大大提高 composer 自动加载 composer 自动加载的规则 vendor中的每个依赖都有composer.json文件,其中autoload这个字段告诉composer该依赖 遵循了PHP哪种自动加载的规则,使得composer可以将它的规则写入对应写入对应的文件中以实现自动加载. 目前composer中支持四种规则分别为psr-0.psr-4.classma…
类的自动加载 两个函数 __autoload()魔术方法.spl_autoload_register 当php文件中使用了new关键字实例化一个对象时,如果该类没有在本php文件中被定义,将会触发__autoload函数 __autoload 运行到new Animal()时,发现 class Animal没有定义 触发了__autoload函数,该函数引进了Animal.php文件 实例化成功. spl_autoload_register (注意:当文件中同时出现__autoload和spl_…
自动加载的类型 总体来说 composer 提供了几种自动加载类型 classmap psr-0 psr-4 files 这几种自动加载都会用到,理论上来说,项目代码用 psr-4 自动加载, helper 用 files 自动加载,development 相关用 classmap 自动加载. psr-0 已经被抛弃了,不过有些历史遗留依然在用,所以偶尔也会看到. classmap 这应该是最最简单的 autoload 模式了.大概的意思就是这样的: { "classmap": [&q…
针对PHP这种编程语言,到目前FIG指定了五个规范,分别如下: PSR0:自动加载: PSR1:基本代码规范: PSR2:代码样式规范: PSR3:日志接口规范: PSR4:自动加载规范: 看上去PSR4与PSR0是重复了,但是PSR4规范比较干净,可以看成PSR0规范的升级版.二者最重要区别在于:PSR0规范中,下划线会被转换为目录分隔符,但是PSR4中下划线不具有特殊的含义.二者都是通过特定的目录.文件名以及类名,实现快速查找到类文件,并将相应的类加载进来. PSR0和PSR4要求有个命名的…
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" }, "files":[ "app/Common/function.php", "api/qqOauth/qqConnectAPI.php" ] }, 比如我新增了一个qq的登录api(api…
说明:本文主要以Laravel的容器类Container为例做简单说明Composer的自动加载机制. Composer的自动加载机制 1.初始化一个composer项目 在一个空目录下composer安装Laravel的容器Container包: composer require illuminate/container 然后在该目录下新建一个index.php文件,然后分析下Container类为何能被实例化: <?php /** * Created by PhpStorm. * User:…
首先看下phpcomposer官方的定义,composer是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. composer可以帮助我们快速安装类库,通过过composer,我们可以使用大量的第三方库,而无需自己造轮子,现在很多流行框架很注重使用composer,因为你可以使用大量优秀的轮子,大大提高效率. 注意是管理依赖,比如包a需要包b和c当我们安装a的时候并不需要考虑…
准备工作:提前安装好composer 1.创建项目目录OOP 2.OOP目录下新建composer.json文件,composer.json是一个空json文件,代码如下: { } 3.打开控制台,进入项目目录OOP,在OOP目录下运行composer命令: composer install 4.运行后自动生成composer文件目录,目录结构如下: OOP - Vendor - composer - autoload_classmap.php - autoload_namespaces.php…
Composer 的自动加载机制 Composer 提供了四种自动加载方式,分别是 PSR-0.PSR-4.生成 classmap 以及之间包含 files. PSR-0 方式 PSR-0 方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了. 但是,因为现在的主流 PHP 框架都已经实现了 PSR-0 方式,所以 Composer 仍然向下兼容.按照 PSR-0 的规则,当加载 User\Info 这个类的时候,那么会去寻找 src/User/Info.php,最后这…
自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个免费的自动加载支持. require 'vendor/autoload.php'; 这使得你可以很容易的使用第三方代码.例如:如果你的项目依赖 monolog,你就可以像这样开始使用这个类库,并且他们将被自动加载. $log = new Monolog\Logger('name');$log->pushHandler(new Monolog\Handl…
目的 本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧 命名空间(namespace) php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量  和 第三方的类/函数/常量冲突 .引用命名空间下资源都要 使用关键字 use 标明 例如 require_once("apanly/Brow…
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .…
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .…