php composer 实现类的自动加载
我们在开发项目中会经常用到第三方的类库插件,但是如果每次需要使用的时候都会在代码的某一处去引入,然后在实例化,这样做感觉很不方便,那么怎么实现自动加载呢,下面简单介绍使用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 实现类的自动加载的更多相关文章
- 浅析PHP类的自动加载和命名空间
php是使用require(require_once)和include(include_once)关键字加载类文件.但是在实际的开发工程中我们基本上不会去使用这些关键字去加载类. 因为这样做会使得代码 ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- thinkphp系列:类的自动加载是如何设计的
在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...
- final关键字,类的自动加载,命名空间
final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的 ...
- PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)
在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...
- PHP面向对象----- 类的自动加载
1.类的自动加载 spl_autoload_register函数 test.php <?php spl_autoload_register('autoload'); // require_onc ...
- tp5底层源码分析之------tp5.1类的自动加载机制
tp框架作为国内主流框架,目前已经发布了6.0版本,相当于3.*版本是进行了重构,今天我们从源码的角度来研究下tp5.1自动加载的实现 作为单入口框架,从入口文件看起,入口文件在public/下,那么 ...
- composer的autoload来自动加载自己编写的函数库与类库?
1.使用命令composer init生成composer.json文件,并编辑autoload选项内容如下: 其中又包含主要的两个选项: files 和 psr-4. files就是需要compos ...
- Drupal如何实现类的自动加载?
Drupal通过spl_autoload_register()注册类加载器实现自动加载: function _drupal_bootstrap_database() { // ... .... spl ...
随机推荐
- How to safely downgrade or remove glibc with yum and rpm
Environment Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 6 glibc, glibc-common, glibc-devel, ...
- MySQL复制报错(Slave failed to initialize relay log info structure from the repository)
机器重启以后,主从出现了问题,具体报错信息: Slave failed to initialize relay log info structure from the repository 解决方案: ...
- [翻译] JTBorderDotAnimation
JTBorderDotAnimation https://github.com/jonathantribouharet/JTBorderDotAnimation JTBorderDotAnimatio ...
- 3 Dockerfile指令详解-FROM&MAINTAINER&RUN
1.FROM指令 FROM centos #指定centos为基础镜像 2.MAINTAINER 指令 MAINTAINER @QQ.COM #指定维护人等信息,方便维护 3.RUN 命令 #新建 ...
- December 06th 2016 Week 50th Tuesday
Behind every beautiful thing, there is some kind of pain. 美丽背后,必有努力. No pains, no gains. But it seem ...
- Pip批量安装/卸载包
pip批量安装package 将需要安装的包保存在requirements.txt中 cd到aa.txt所在目录,运行: pip install -r requirements.txt pip批量卸载 ...
- 如何用iOS工程生成iOS模拟器包
1. 在终端上运行下面的命令来查找你的机器上可用的SDK的版本 xcodebuild -showsdks 2. 创建模拟器包: xcodebuild -workspace ** -scheme ** ...
- 41、Thead线程 System.Thread与互斥体Mutex
Thead线程 System.Thread 使用Thread类可以创建和控制线程.下面的代码是创建和启动一个新线程的简单例子.Thread 类的构造函数重载为接受ThreadStart和Paramet ...
- HttpClient简述
HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率 ...
- jquery.form.js(ajax表单提交)
Form插件地址: 官方网站:http://malsup.com/jQuery/form/ 翻译地址:http://www.aqee.net/docs/jquery.form.plugin/jquer ...