我们在开发项目中会经常用到第三方的类库插件,但是如果每次需要使用的时候都会在代码的某一处去引入,然后在实例化,这样做感觉很不方便,那么怎么实现自动加载呢,下面简单介绍使用composer实现自动加载:
1、首先需要安装composer
安装地址(中国镜像): https://pkg.phpcomposer.com/#how-to-install-composer
根据它的说明一步一步进行安装
2、安装好composer以后创建一个工作目录,eg:work
3、在项目目录根目录下建立一个composer.json文件,格式如下:(注意必须为空的json格式文件)
{ }
4.打开命令行控制台cmd,进入工作目录work,运行composer命令:
composer install
5.运行后会生成composer文件目录:
- 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
6.打开composer.json文件:
共有四种方式:
PSR-0(不推荐使用);
PSR-4;
Class-map;
Files;
下面演示PSR-4实现自动加载:
"autoload": { "psr-4": { "src\\": "src/" } }
代码中"命名空间"(不知道命名空间的话,最好先去搜索查一下)习惯为"目录名/文件名"
7.新建src目录,在目录下创建IndexController.php,php文件内容如下:
//设置命名空间 namespace src; class IndexController { public function index() { echo 'indexController'; } }
8.使用刚创建的IndexController类:
在work根目录创建index.php:
//引入vendor下的autoloas.php require 'vendor/autoload.php'; //实例化对象 $index = new src\\IndexController(); //调用类中的方法 $index->index();
运行后会出现报错:
class IndexController not fund
打开控制台,进入到work文件目录,运行composer命令:
composer dump-autoload
在运行work下的index.php,不报错误信息说明已经成功实现自动加载了。
9.在work下的index.php文件中我们实例化IndexController类的时,格式为"new src\\IndexController();";
如果命名空间较长的情况下,看起来不太方便,那我们可以用"use"来引入关键字,修改index.php代码如下:
use src\IndexController; //引入vendor下的autoloas.php require 'vendor/autoload.php'; //修改后的实例化 $index = new IndexController(); //调用类中的方法 $index->index();
在运行index.php结果和上面一样。
**注意:**在配置完composer.json以后一定要运行"composer dump-autoload"不然会出现class not fund;
The above is the detailed content of How to implement automatic loading of classes in composer in php (explanation with examples). For more information, please follow other related articles on the PHP Chinese website!