我们在开发项目中会经常用到第三方的类库插件,但是如果每次需要使用的时候都会在代码的某一处去引入,然后在实例化,这样做感觉很不方便,那么怎么实现自动加载呢,下面简单介绍使用composer实现自动加载:

原文地址:小时刻个人博客>http://small.aiweimeng.top/index.php/archives/11.html

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;

php composer 实现类的自动加载的更多相关文章

  1. 浅析PHP类的自动加载和命名空间

    php是使用require(require_once)和include(include_once)关键字加载类文件.但是在实际的开发工程中我们基本上不会去使用这些关键字去加载类. 因为这样做会使得代码 ...

  2. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  3. thinkphp系列:类的自动加载是如何设计的

    在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...

  4. final关键字,类的自动加载,命名空间

    final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的 ...

  5. PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)

    在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...

  6. PHP面向对象----- 类的自动加载

    1.类的自动加载 spl_autoload_register函数 test.php <?php spl_autoload_register('autoload'); // require_onc ...

  7. tp5底层源码分析之------tp5.1类的自动加载机制

    tp框架作为国内主流框架,目前已经发布了6.0版本,相当于3.*版本是进行了重构,今天我们从源码的角度来研究下tp5.1自动加载的实现 作为单入口框架,从入口文件看起,入口文件在public/下,那么 ...

  8. composer的autoload来自动加载自己编写的函数库与类库?

    1.使用命令composer init生成composer.json文件,并编辑autoload选项内容如下: 其中又包含主要的两个选项: files 和 psr-4. files就是需要compos ...

  9. Drupal如何实现类的自动加载?

    Drupal通过spl_autoload_register()注册类加载器实现自动加载: function _drupal_bootstrap_database() { // ... .... spl ...

随机推荐

  1. ORA-12514

    ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 监听器目前不知道在 ...

  2. rsync- sersync -inotify

    Rsync简介 Rsync是一款优秀的.快速的.多功能的本地或远程数据镜像同步备份工具.适用于unix/linux/windows等多种平台 从软件的名称Rsync(Remote Rynhroniza ...

  3. python windows 远程执行bat

    本机环境:Win 10,python3.6 远程机器: Win7.WinServer 因python在windows上执行需要用到 wmi 模块. wmi 模块下载地址:https://sourcef ...

  4. mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc

    php从mysql中访问数据库并取得数据,取得结果的过程中用到好几个类似的方法,区别及用法值得区分一下,看下面的代码 代码如下: <?php $link=mysql_connect('local ...

  5. 今天调试一个open有个小启发

    从别处抄来一个代码 mode是:O_WRONLY 以只写方式打开文件 而实际上我用的是read操作,所以老是读出-1 检查了很久才发现是这个错误:O_WRONLY 以只写方式打开文件 -> O_ ...

  6. OC文件操作2

    1.对文件本身的操作 NSManager 2.对文件内容的操作 NSHandle 文件句柄 NSFileHandle * fh = [NSFileHandle fileHandleForReading ...

  7. Ubuntu 14.04 下安装Skype

    操作1: Ubuntu 14.04 下安装Skype,使用 Ctr+Alt+T组合键打开终端Terminal,输入如下即可: wget -O skype.deb http://download.sky ...

  8. 虚拟机下的CentOS无法上网的解决办法

    1.首先保证虚拟机的网络适配器为NAT模式 2.设置虚拟机的“编辑”-->“虚拟网络编辑器”中的VMnet8的DHCP的设置两个选项都勾选上. 3.设置物理主机,保证虚拟网关的IP地址为自动获取 ...

  9. css3 圣诞红包雨效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. langularJs的MVC模式

    1.数据的挂载 在函数中设置数据 function Aaa($scope){ $scope.name = 'hello'; $scope.age = '20'; } 2.ng-controller 这 ...