使用composer 实现自动加载

准备工作:提前安装好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

    - autoload_psr4.php

    - autoload_real.php

    - autoload_static.php

    ClassLoader.php

    installed.json

    LICENSE

 - autoload.php

- composer.json

5.自动生成目录结构后,在composer.json文件中新增代码,实现自动加载,代码如下:


{

"autoload": {

    "psr-4": {

      "Andy\\" : "src"

    }

  }

}

Andy是厂商名,src是对应的目录名。

5.新建src目录,在src目录下,创建一个类文件AuthController.php,该文件代码如下:

<?php

?

namespaceAndy; // 设置命名空间

?

classAuthController{

    publicfunctiontest(){

        echo‘test‘;

    }

}

6.使用类文件。在OOP目录下新建index.php文件,此时的目录结构如下:

OOP

- Src

 - AuthController.php

- Vendor

 - composer

    - autoload_classmap.php

    - autoload_namespaces.php

    - autoload_psr4.php

    - autoload_real.php

    - autoload_static.php

    ClassLoader.php

    installed.json

    LICENSE

 - autoload.php

- composer.json

- index.php

在index.php文件中引入AuthController类,index.php文件代码如下:

<?php

    require‘vendor/autoload.php‘;

    $auth=newAndy\AuthController();

    echo$auth->test();

运行index.php文件,提示错误信息:


Class‘Andy\AuthController‘notfound

这是因为修改后的composer文件还未生效,我们需要在控制器运行如下composer命令:


composer dump-autoload

打开Vendor/autoload_psr4.php,自动生成如下代码:


<?php

?

// autoload_psr4.php @generated by Composer

?

$vendorDir=dirname(dirname(__FILE__));

$baseDir=dirname($vendorDir);

?

returnarray(

    ‘Andy\\‘=>array($baseDir . ‘/src‘),

);

即是将Andy替换成OOP/src。再次运行index.php文件,运行结果如下:


test

说明自动加载生效了,因为在没有使用require引入类文件的情况下,直接在index.php文件中使用关键字new 实例化对象成功了。

  1. 使用use 关键字引入。在index.php文件中,我们使用 new Andy\AuthController()引入类文件,很多时候,厂商的名字不像“Andy”只有4个字母,通常会很长,并且会在多处使用。针对这种情况,可以在使用类之前,添加use关键字来实现。修改index.php文件,修改后代码如下:

<?php

    useAndy\AuthController; // 使用use关键字

?

    require‘vendor/autoload.php‘;

    $person=newAuthController(); // 更改引用方式

    echo$person->test();

运行结果相同。

注意:多数情况下,忘记使用composer dump-load命令导致找不到类名。

原文地址:https://www.cnblogs.com/mrxy/p/8145173.html

时间: 2024-11-09 22:42:05

使用composer 实现自动加载的相关文章

深入解析 composer 的自动加载原理 (转)

深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于

Composer 的自动加载机制

Composer 的自动加载机制 Composer 提供了四种自动加载方式,分别是 PSR-0.PSR-4.生成 classmap 以及之间包含 files. PSR-0 方式 PSR-0 方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了. 但是,因为现在的主流 PHP 框架都已经实现了 PSR-0 方式,所以 Composer 仍然向下兼容.按照 PSR-0 的规则,当加载 User\Info 这个类的时候,那么会去寻找 src/User/Info.php,最后这

使用PSR-4配合composer autoload 自动加载文件夹

require 文件很麻烦,使用PSR-4搭配composer一次加载,终生受用. 感觉类似java中的import了,自己先记录一下最近理解的. 用composer管理自己的包吧 安装composer 这个不多赘述 英文版教程 中文版教程 PSR-4规范 PSR-4-autoloader 构建项目目录 |-project ? |-src ? |-View.php ? |-app ? |-Tools.php |-composer.json 上面路径的View.php在project/src/Vi

优雅的 laravel(1)- Composer概述及其自动加载探秘

刚开始接触laravel,一天时间走马观花的看了一些官方文档之后便开始了laravel的学习.这里谈到的都是最基础的东西,各路大神,可直接略过. composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具库,Composer就会帮你安装这些依赖的库文件.运行 Composer 需要 PHP 5.3.2+ 以上版本. 使用composer 第一步,声明依赖关

Laravel 学习笔记之 Composer 自动加载

说明:本文主要以Laravel的容器类Container为例做简单说明Composer的自动加载机制. Composer的自动加载机制 1.初始化一个composer项目 在一个空目录下composer安装Laravel的容器Container包: composer require illuminate/container 然后在该目录下新建一个index.php文件,然后分析下Container类为何能被实例化: <?php /** * Created by PhpStorm. * User:

Composer实现项目的自动加载

Composer管理依赖包,实现自动加载 composer通过require.remove命令对项目进行依赖包的添加与删除. composer通过对项目根目录下的composer.json文件的配置,可以实现PSR-4自动加载的规范. composer.json架构详解,此处有详细介绍如何配置该文件. 通过对TP5.1的源码进行学习,TP5的自动加载主要是根据composer install命令执行后composer在vendor目录下生产的ClassLoader类进行重写.Composer自动

Yii2的深入学习--自动加载机制

Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .

Yii2的深入学习--自动加载机制(转)

Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .

Composer中的自动加载

Composer是PHP的一个包依赖管理工具,类似Ruby中的RubyGems或者Node中的NPM,它并非官方,但现在已经非常流行.此文并不介绍如何使用Composer,而是关注于它的autoload的内容吧. 举例来说,假设我们的项目想要使用monolog这个日志工具,就需要在composer.json里告诉composer我们需要它: { "require": { "monolog/monolog": "1.*" } } 之后执行: php