PHP命名空间实现自动加载引入文件

 更新时间:2022年08月17日 09:15:54   作者:qq_39688201  
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中inlcude()性能对比详解

    php中inlcude()性能对比详解

    PHP程序员最常用的两个函数莫过于require_once和include了,通过这两个函数,我们可以使用其他类库中定义的类等对象。但很多人在使用包含相同目录下的其他文件时,仅仅简单使用下面的代码进行文件引用
    2012-09-09
  • 分割GBK中文遭遇乱码的解决方法

    分割GBK中文遭遇乱码的解决方法

    以下是对分割GBK中文遭遇乱码的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • jQuery+php简单实现全选删除的方法

    jQuery+php简单实现全选删除的方法

    这篇文章主要介绍了jQuery+php简单实现全选删除的方法,涉及php结合jQuery操作表单的全选及ajax交互实现删除的相关技巧,需要的朋友可以参考下
    2016-11-11
  • 使用php实现截取指定长度

    使用php实现截取指定长度

    以下是对使用php实现截取指定长度的方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • php实现的日历程序

    php实现的日历程序

    这篇文章主要介绍了php实现的日历程序,可实现基本的日历显示与实时查询功能,非常具有实用价值,需要的朋友可以参考下
    2015-06-06
  • PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    这篇文章主要介绍了PHP中使用file_get_contents抓取网页中文乱码问题解决方法,可以通过使用curl配置gzip选项来解决,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • php visitFile()遍历指定文件夹函数

    php visitFile()遍历指定文件夹函数

    php visitFile()遍历指定文件夹函数,需要在php中遍历文件夹功能的代码,可以参考下。
    2010-08-08
  • php中判断字符串是否全是中文或含有中文的实现代码

    php中判断字符串是否全是中文或含有中文的实现代码

    php中判断字符串是否全是中文或含有中文的实现代码,主要是利用正则匹配中文判定。
    2011-09-09
  • 利用PHP实现开心消消乐的算法示例

    利用PHP实现开心消消乐的算法示例

    开心消消乐应该对大家来说都不陌生吧,下面这篇文章主要给大家介绍了关于如何利用PHP实现开心消消乐算法的相关资料,文中将需求和示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • ThinkPHP实现定时任务的操作步骤

    ThinkPHP实现定时任务的操作步骤

    定时任务就是在特定的时间点执行一些特定的任务,比如,每天晚上12点自动清空数据库,或者每分钟检查一次服务器资源使用情况,那么,如何使用ThinkPHP来实现这些定时任务呢?本文小编给大家介绍了ThinkPHP实现定时任务的操作步骤,需要的朋友可以参考下
    2024-09-09

最新评论