首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP标准规范之-composer 自带autoload使用【最简单、最底层的用法】

执行后显示 Generating autoload files(自动添加 autoload.php) 三、如何使用这个autoload 重点: 1、必须在composer.json里面注册你要使用的命名空间...2、use \命名空间\路径\类名(类名、文件名必须相同) 等效于 直接new \命名空间\路径\类名 3、想要用use,其文件来源处必须包含namespace。...(形式上require xxx/autoload.php + use xxx == require xxx.php) 4、use 后面跟的是类名 非 文件名 四、composer和composer.json...和PHP入口文件index.php的关系 1、composer命令、配置composer.json再配合composer update的作用:本质是不参与运行的配置文件 下载文件,设置名称、路径、自动加载方式...不懂: 既然是引用,为什么引用的文件不能直接输出,而必须是类的形式 难道更准确的理解是:“加载”、“加载类”??? ? ? ? ? ?

2.8K20

PHP Composer 的自动加载

PHP 的 autoload 机制,可以在使用一个未导入的类时动态加载该类,从而实现延迟加载和管理依赖类文件的目的。...PSR-4 其中规定:一个类的完整类名应该遵循一下规范: \命名空间>(\命名空间>)*\类名>,即: 完整的类名必须要有一个顶级命名空间,被称为 “vendor namespace”; 完整的类名可以有一个或多个子命名空间...三、Composer 自动加载的过程 结合 spl_auto_register 和 PSR-4 的命名空间规范,可以想象,我们可以通过类的命名空间,来找到具体类的存放位置,然后通过 require 将其加载进来生效...第一步,建立类的命名空间和类存放位置的映射关系 首先看 vendor 目录下的 autoload.php 文件,所有项目启动必然要先 require 这个文件。...到此,建立命名空间到类存放路径的关系已经完成了。

28210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Laravel5.2之Composer自动加载

    composer加载类的流程 使用composer最大的好处是只需最开始require一个autoload.php文件,就可以new你所需要的类了,不再需要传统的方式A文件内各种include跳到B文件又各种...这个类是composer为了防止类冲突搞了一个命名ComposerAutoloaderInit+hash,不管咋样,require_once这个类后需要返回的是一个加载器$loader,而这个加载器经过四种规范遍历后...autoload函数栈中,最后返回一个loader加载器,而这个加载器是包含一些私有变量的,由于本Container包只包含IlluminateContainer和IlluminateContracts...,且都是psr-4规范,则私有变量prefixLengthsPsr4和prefixDirsPsr4就包含了命名空间路径映射的数组值,其余私有变量就是空。...Container类的实例化过程 loader这个加载器已经有了,而且它还是塞满了各种私有变量,这些变量值为命名空间路径映射或者路径哈希映射等,当然这里只有命名空间路径映射这种psr-4规范了。

    3.6K21

    Composer (四) -- 其他自动加载方法

    composer 自动加载 这篇写了自动加载及自定义类使用 psr4 加载。下面介绍下另两种自动加载的方式。...person 可以看到,这次我们并没有使用命名空间跟目录进行一一对应,只是将类目录放在了 classmap 的数组中,在 autoload_classmap.php 中可以看到映射关系。...'/Classmap/Other/Person.php', ); 当然我们也可以给类定义命名空间,并且命名空间的名字并不一定要跟目录名对应,如下 # Other/Person.php <?...php require 'vendor/autoload.php'; $person = new XXX\Person(); 可以看到,classmap 的方式比较灵活,不拘束与目录与命名空间的约束...在各 php 框架中,都会有很多自动加载的使用,但是其实使用的都是 composer 的自动加载,所以将 composer 的自动加载掌握后,对于 php 框架的理解会更深入一些。

    54720

    -代码模块

    视图 命名空间 CodeIgniter所使用的模块功能的核心组件来自于 与PSR4相适应的自动加载 。...虽然所有的代码都可以使用PSR4的自动加载和命名空间,最主要的充分使用模块优势的方式还是为你的代码加上命名空间,并将其添加到 app/Config/Autoload.php 中,在 psr4 这节中。...自动发现系统通过扫描所有在 Config/Autoload.php 中定义的PSR4类型的命名空间来实现对于目录/文件的识别。...自动发现与Composer 通过Composer安装的包将会默认被自动发现。这只需要Composer识别所需要加载的命名空间是符合PSR4规范的命名空间,PSR0类型的命名空间将不会被发现。...,所以不需要额外的操作: $model = new \Acme\Blog\Models\PostModel(); 视图 视图文件可通过 视图 文档中所述的类命名空间进行加载: echo view('Acme

    1.2K10

    Composer (三) -- 自动加载

    自动加载 composer (一) – 依赖管理 前面这篇文章介绍了 composer 对依赖的安装及更新。 composer (二) – 第三方包使用 这篇文章记录了如何使用一个第三方类。...psr-4自动加载规范 当我们安装了依赖或者进行更新以及创建一个新的项目时,在 vendor 包中总是会生成一个 autoload.php 文件,这个文件就是用来记录并规范自动加载的配置文件。...'/monolog/monolog/src/Monolog'), ); 可以看到,psr 通过关联数组的方式将类名与包源码所对应起来。 那 monolog 是如何自动加载到这个数组中的呢?...运行 test.php 文件: php test.php # user controller autoload 注意,psr4 的方式规定类的命名空间一定要与类的目录结构对应,在 Linux 上,...文件名是区分大小写的,所以命名空间的大小写也是不一样的。

    1.1K10

    深入理解composer自动加载原理

    $s = new CaseClass(); $s->show(); 这个函数最大的作用就是维护这个队列并且可以延迟加载我们需要的文件 查看composer的源码并实现psr4命名空间自动加载 composer...我们来看一下,因为考虑到php版本的问题,所以有多种加载方式,比如我们耳熟能详的 命名空间自动加载 在 vendor 下面建立目录 Model/UserModel.php、autoload_psr4.php...在autoload_real.php中,大家可以发现在调用ClassLoader的register()函数前,还加载了几个目录相关的文件 autoload_static.php,静态加载方式,顶级类加载命名空间...autoload_psr4.php,遵守PSR4规范的包目录映射数组文件 autoload_namespaces.php,命名空间映射,PSR0规范 autoload_classmap.php,类图映射...完成了文件命名空间相关内容的映射。当register()进行加载的时候,自然就得心应手了。 参考自: https://zhuanlan.zhihu.com/p/96505061

    1.4K30

    PHP 命名空间与类自动加载实现

    App.php 和 Test.php 归属于同一个目录,所以声明了相同的命名空间,实际开发过程中,我们通常就是根据目录来组织并管理命名空间的。...调用同一个命名空间中的类和函数,可以像上面代码这样直接调用,如果是不同命名空间的类和函数,则需要通过 use 关键字引入,我们在 ns 目录下新建一个 testing 子目录,并在该子目录下新建一个 Test.php...这里,我们将该子类所属命名空间声明为 App\Testing(同一个命名空间下不允许出现重名的类和函数),然后通过 use 关键字引入上级命名空间中的 Test 类,由于该类名与子类名同名,所以通过 as...表示当前根目录作为类自动加载的入口目录,Composer 会从这里开始读取所有命名空间并建立目录映射关系。接下来执行 composer install 初始化依赖库和类自动加载设置: ?...(); autoload_php 是所有 Composer 管理类自动加载的入口文件,所以我们只需要在代码中引入这个文件即可通过 Composer 来管理所有类的自动加载,在 App.php 中,修改示例代码如下

    1K20

    composer autoloader

    attention: 1 文件名应该具有相同的类名 2 每个文件应该都只有一个类 3 注意文件名和类名不要和其他冲突 3 composer如何进行自动加载 添加composer.json: { "autoload...a) Classmap:最简单,在vendor / composer / autoload_classmap.php中,当composer自动加载类时,它扫描所提到目录中的所有文件(在composer.json...文件中) 并创建一个名称空间数组和相应的路径。...必须使用名称空间,尤其是PSR-4,因为名称空间附加到文件路径。 子目录名称必须与子命名空间名称的大小写匹配。...php // path /Classes/A.php class Classes_A {} 注意L这里没有用到命名空间: composer.json运行时,任何命名空间前缀App将在Classes目录中查找该文件

    73610

    深入学习Composer原理(四)

    但这个文件最大的作用是去加载ClassLoader.php这个文件和一些目录文件,也在同级目录下。这个文件就值得大家好好研究下了,不过核心也无外乎前面三篇文章中的内容。...但是在autoload_real.php中,大家可以发现在调用ClassLoader的register()函数前,还加载了几个目录相关的文件: autoload_static.php,静态加载方式,顶级类加载命名空间...autoload_psr4.php,遵守PSR4规范的包目录映射数组文件 autoload_namespaces.php,命名空间映射,PSR0规范 autoload_classmap.php,类图映射...其他的其实就是对应的没有遵守PSR4规范的一些类库。而在ClassLoader中的register()函数就是加载的这些文件中对应的路径文件。...完成了文件命名空间相关内容的映射。当register()进行加载的时候,自然就得心应手了。

    55820

    php7高效生成二维码:composer和荷兰PHP开发者的QrCode

    composer安装完毕,QrCode的类文件就按照composer的规则自动存放在vendor目录下了,打开vendor目录你会发现有个autoload.php文件和几个文件夹,这几个文件存放的就是各种类库文件了...而autoload.php文件则是composer自动为我们处理好的php类加载器,我们要调用由composer安装的某个类时,引用这个文件即可,不用再去include一堆文件了,这就是命名空间与文件存储路径按一定规则一一对应...,并利用php的spl_autoload_register函数实现的自动加载机制实现各个类的自动加载功能,所以我们要调用由composer安装的类时只需要引入autoload.php这个加载器文件就可以了...:26:05 * @version 1.0 */error_reporting(0);//引入composer自动生成的类加载器require_once 'vendor/autoload.php';//...命名空间方式调用QrCode类use Endroid\QrCode\QrCode as EndroidQrCode;//将QrCode命名空间腾出来 //处理需生成二维码的内容、参数和文字$data

    2.7K40

    PHP 自动加载

    include_once($classname.'.php') } 将这个函数定义在文件中, 当遇到未引入的类时, 会调用此函数进行引入, 看起来貌似很好, 我们只需要将此函数定义在也给PHP文件中,...$classname, 发现是: test01\test 也就是说, 我们使用的时候可以将命名空间与路径相对应, 关于这个好像还有一个标准, 具体记不清了....这样一对应, 有没有感觉和java中的包有些一样了, 反正我是觉得挺像....composer 好了, 现在通过 composer来管理第三方库, 它将自动加载都做好了, 只要引入他的 autoload.php 文件就可以了....composer提供了几种类型的自动加载 1.psr-4 大概就是我们上面说的路径和命名空间对应的形式 2. classmap 保存各个类与文件的映射map ---- 等等吧, 没有具体研究, 不过大体是对自动加载的封装

    1.9K30

    手把手教你写一个composer包

    vendor是composer存放包的地址,所有的包都存放在该路径中统一管理,并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可 require..."vendor/autoload.php"; 但是我们也需要在包的配置文件中写上需要自动加载哪个目录才有效哈!...写完之后需要运行一下命令行composer dump-autoload更新composer的命名空间与文件夹映射关系。 上一步骤非常重要 漏了就不正常执行了。...然后我们创建src文件夹,再创建siam文件夹,在里面创建Test.php文件 写上命名空间 Siam; 根据psr-4规范,类名要与文件名相同。 的想法来写类,只需要注意命名空间的层级与文件夹层级相同,类名与文件名相同即可自动加载。

    45310

    手把手教你写一个composer包

    vendor是composer存放包的地址,所有的包都存放在该路径中统一管理,并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可 require... "vendor/autoload.php"; 但是我们也需要在包的配置文件中写上需要自动加载哪个目录才有效哈!...写完之后需要运行一下命令行composer dump-autoload更新composer的命名空间与文件夹映射关系。 上一步骤非常重要 漏了就不正常执行了。...然后我们创建src文件夹,再创建siam文件夹,在里面创建Test.php文件 写上命名空间 Siam; 根据psr-4规范,类名要与文件名相同。 的想法来写类,只需要注意命名空间的层级与文件夹层级相同,类名与文件名相同即可自动加载。

    67920

    手把手教你写一个composer包

    vendor是composer存放包的地址,所有的包都存放在该路径中统一管理,并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可 require..."vendor/autoload.php"; 但是我们也需要在包的配置文件中写上需要自动加载哪个目录才有效哈!...写完之后需要运行一下命令行composer dump-autoload更新composer的命名空间与文件夹映射关系。 上一步骤非常重要 漏了就不正常执行了。...然后我们创建src文件夹,再创建siam文件夹,在里面创建Test.php文件 写上命名空间 Siam; 根据psr-4规范,类名要与文件名相同。 的想法来写类,只需要注意命名空间的层级与文件夹层级相同,类名与文件名相同即可自动加载。

    45940

    Laravel框架中composer自动加载的实现分析

    基础 自动加载允许你通过即用即加载的方式来加载需要的类文件,而不用每次都写繁琐的require 和include语句。...因此,每一次请求的执行过程都只加载必须的类,也不不要关心类的加载问题,只要需要的时候直接使用即可。 laravel 框架是通过composer 实现的自动加载。 是通过  下面的代码实现的。...贴上我实验的代码: 这是autoload.php 加载一些配置好的文件,在后面进行加载或寻找文件时候,就是从加载的配置文件中寻找。寻找要加载的类主要通过register 函数来实现。然后分析register函数。...public function findFile($class) { /// 特别注意 参数$class 是根据命名空间生成的class名称,具体请参考命名空间特性。

    91000

    教你如何编写webman基础插件,打造自己的PHP插件包

    注意: 插件名由两部分组成,厂商名和插件名,例如这里厂商名是tinywan,插件名是encryption。 厂商名和插件名是后面composer要发布的项目名,名称需要小写。...{ return openssl_decrypt(base64_decode($data), $algo, $key, OPENSSL_RAW_DATA); } } 注:以上的命名空间需要和...composer.json的psr-4命名空间保持一致 5、导出插件 当开发完插件后,执行以下命令导出插件 php webman plugin:export --name=tinywan/encryption...导出后的目录结构 vendor ├── autoload.php ├── tinywan │ └── encryption │ ├── composer.json │ └──...更多了解:如何发布一个自己的Composer依赖包 Composer是 用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码

    44710

    基于 Symfony 组件封装 HTTP 请求响应类

    引言 上篇教程学院君给大家介绍了命名空间以及如何基于 Composer 来管理命名空间与 PHP 脚本路径的映射,自此以后,我们将基于这套机制来实现 PHP 类的自动加载和函数引入。...中记录这个扩展包的名称和版本: "require": { "symfony/http-foundation": "^5.1" }, 重新组织博客项目目录结构 此外,我们还要基于命名空间重新组件...我们将所有应用 PHP 代码都转移到了 app 目录下,并且为其设置了命名空间 App,将对外公开的静态资源文件和入口文件 index.php 转移到了 public 目录,而将视图模板文件都转移到了...中配置需要维护命名空间路径映射的目录: "autoload": { "classmap": [ "app" ] } 然后运行 composer dump-auto 让新增的命名空间类映射关系生效...来管理命名空间和类的自动加载,所以在起始行引入了 vendor/autoload.php,关于其原理,上篇教程已经介绍过,接下来,我们引入调整路径后的 bootstrap.php 初始化应用,然后调用

    8.7K20

    这一次,真正掌握composercomposer是现代PHP的基石初识composercomposer包管理规范

    开发过程中,要用到第三方的类库,需要去下载zip包,然后解压,放到相应的目录,处理好命名空间,自动加载的问题,如果这个第三方包还有其他依赖项,还要再次重复这个流程,看着隔壁家python和node.js...composer解决了项目的依赖关系,且实现了自动加载。开发人员只需要几个命令行,就能获取其他开发者的包,PHP开发工作因此变得如同堆积木,可以根据业务的需求,快速方便地拆解组合代码。...install指令安装包依赖 composer install 使用包进行开发 目录结构 composer已经为我们下载了monolog包,且生成了autoload.php自动加载文件 新建monolog.php...,一行指令composer install,代码中引入autoload.php,即可完美地使用第三方包。...以mustache包为例: 在packagist查找 搜索包 点击进入包信息详情页,可以看到包的安装方法以及版本信息 安装包 除了在composer.json中写包的安装信息,还可以通过composer

    1.3K20

    PHP如何使用Composer来自动加载项目文件?

    } } } psr-4顾名思义,是一个基于psr-4(http://www.php-fig.org/psr/psr-4/)规则的类库自动加载对应关系,只要在其后的对象中,以 "命名空间": "...prs-4规范 在PSR-4里边需要定义一个命名空间前缀到路径的映射(相对于包的根目录),如果命名空间前缀Foo\指向一个文件目录src/,当自动加载一个类时,比如Foo\Bar\Baz类,那么这个类的路径为...在 PSR-0 标准中,您必须使用命名空间来定义您的库。完全限定的类名必须反映\\(\)*结构。此外,您的类必须保存在遵循与命名空间相同的目录结构的文件中。...在 PSR-0 自动加载中,您需要将命名空间映射到目录。...在上面的例子中,我们告诉 Composer 任何以Tutsplus\Library命名空间开头的东西都应该在src\Tutsplus\Library目录中可用。

    3.4K40
    领券