博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phper必知必会之类库自动加载的七种方式(三)
阅读量:4310 次
发布时间:2019-06-06

本文共 1872 字,大约阅读时间需要 6 分钟。

## php自动加载

下面显示例子的文件目录结构图

595183-20190424174446598-295299407.png

一、没有使用命名空间的几种实现

test/oneClass.php

class oneClass{    public function show(){        echo "这里是oneClass.php的show方法
"; }}

test/twoClass.php

"; }}

下面7种方式都可以实现自动加载,结果都为:

这里是oneClass.php的show方法这里是twoClass.php的show方法

方法一:index.php 使用__autoload()魔术方法实现自动加载

show();$two = new twoClass();$two->show();

运行结果

Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /Users/lidong/Desktop/wwwroot/test/April/autoload1/index.php on line 5这里是oneClass.php的show方法这里是twoClass.php的show方法

总结:在PHP7.2以后使用__autoload()会报一个警告,7.2之前这种方式是没提示的.这种方式,是调用一个找不到的类会自动取调用__autoload()方法然后在方法里面执行include引用,实现自动加载。

方法二:index2.php 使用spl_autoload_register()方法实现自动加载,创建自定义register方法调用

show();$two = new twoClass();$two->show();

方法三:index3.php 使用spl_autoload_register()方法,不定义register方法直接使用回调

show();$two = new twoClass();$two->show();

方法四:index4.php 使用spl_autoload_register()方法,调用类的register方法实现自动加载

class autoLoad{    public static function register($classname){        include "./test/{$classname}.php";    } }spl_autoload_register(["autoLoad","register"]);$one = new oneClass();$one->show();$two = new twoClass();$two->show();

二、使用命名空间的几种实现

test2/oneClass.php

"; }}

test2/twoClass.php

"; }}

方法五:index5.php,使用spl_autoload_register(),调用加载类的register方法,转化传递过来的命名空间实现自动加载

show();$two = new auto\test2\twoClass();$two->show();

方法六:index6.php 跟方法五类似,区别是use方法调用类实例化时可以直接使用类名,实现自动加载

show();$two = new twoClass();$two->show();

方法七:index7.php 与方法五和六思路一致,只不过加载类放在外部不是引用在统一文件,要点就是命名空间定义的类,要使用也要先include,实现自动加载

autoLoad.php
index7.php
show();$two = new twoClass();$two->show();

总结:所有的自动加载思想都是调用一个没引用的类库会,PHP会自动执行的一个加载方法,这个方法有可能是类的方法也有可能是普通方法,但不管怎么样都最终使用include执行文件包含,只不过命名空间需要转化下获取类名。另外值得注意的是,如果是一个php的框架自动加载实现也基本一致,只不过他会根据不同文件夹下面的定义判断后include来实现不同文件夹下文件的引用,来实现整个框架的自动加载。

转载于:https://www.cnblogs.com/lisqiong/p/10763793.html

你可能感兴趣的文章
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
ubuntu终端一次多条命令方法和区别
查看>>
python之偏函数
查看>>
vnpy学习_06回测结果可视化改进
查看>>
读书笔记_量化交易如何建立自己的算法交易01
查看>>
设计模式03_工厂
查看>>
设计模式04_抽象工厂
查看>>
设计模式05_单例
查看>>
设计模式06_原型
查看>>
设计模式07_建造者
查看>>
设计模式08_适配器
查看>>
设计模式09_代理模式
查看>>
设计模式10_桥接
查看>>
设计模式11_装饰器
查看>>
设计模式12_外观模式
查看>>
设计模式13_享元模式
查看>>
设计模式14_组合结构
查看>>
设计模式15_模板
查看>>
海龟交易法则01_玩风险的交易者
查看>>