php的namespace命名空间仅仅提供了一个逻辑上的类的隔离空间,我们在引用类时,仍要自己实现自动载入。思路就是使用一个未引入的类时,php自动触发spl_autoload_register这个方法,然后就会根据命名空间的结构解析为文件路径,引入相关的类文件
PHP 命名空间(namespace)
PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
虽然使用了命名空间,但我们在使用的时候也需要引入PHP文件,这就造成命名空间有时候不会减少我们的工作量,反而增加了我们的工作量。
自动加载
自动加载就是为了解决有了命名空间还让我们引入文件的问题。
文件结构:
自动加载有几种方式去实现:
1.__autoload()方法
index.php文件
function __autoload($class){
if ($class) {
$file = str_replace('\\', '/', $class);
$file .= '.php';
if (file_exists($file)) {
include $file;
}
}
}
$class = new \app\Index();
$class->index();
2.spl_autoload_register()方法,如果用spl_autoload_register,autoload就失效了。
index.php文件
spl_autoload_register(function ($class) {
if ($class) {
$file = str_replace('\\', '/', $class);
$file .= '.php';
if (file_exists($file)) {
include $file;
}
}
});
$class = new \app\Index();
$class->index();
3.使用composer的自动加载实现。
在文件的跟目录创建composer.json文件。"app\\": "app"指向命名空间的文件存放的地址
{
"autoload": {
"psr-4": {
"app\\": "app"
}
}
}
使用命令composer install,生成vendor文件在根目录index.php 引入vendor/autoload.php
require 'vendor/autoload.php';
PSR-0
PHP的命名空间必须与绝对路径一致。
类名首字母大写。
除了入口文件之外,其他的PHP文件必须是一个类,不能有执行的代码。
到此这篇关于PHP命名空间实现自动加载引入文件的文章就介绍到这了,更多相关PHP自动加载内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:PHP命名空间实现自动加载引入文件
- PHP中PDO事务处理操作示例 2022-10-15
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
- 用nohup命令实现PHP的多进程 2023-09-02
- laravel通用化的CURD的实现 2023-03-17
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
- php微信公众号开发之秒杀 2022-11-23
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- Laravel balde模板文件中判断数据为空方法 2023-08-30