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

来源:脚本之家  责任编辑:小易  
目录
PHP 命名空间(namespace)自动加载PSR-0

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 命名空间(namespace)PHP命名空间(namespace)原理与用法详解php 命名空间(namespace)原理与用法实例小结PHP命名空间namespace及use的简单用法分析PHP命名空间namespace的定义方法详解PHP命名空间namespace用法实例分析thinkphp autoload 命名空间自定义 namespacePHP命名空间(namespace)的使用基础及示例PHP命名空间(Namespace)简明教程

  • 本文相关:
  • php数组操作简单案例分析
  • 针对php开发安全问题的相关总结
  • php7连接mysql实现简易查询程序的方法
  • php 用checkbox一次性删除多条记录的方法
  • php 将字符串按大写字母分隔成字符串数组
  • php编程之微信公众平台企业号验证接口示例【回调操作】
  • php获取类私有属性的3种方法
  • php7安装yar扩展的方法详解
  • php实现仿google分页效果的分页函数
  • flash用php连接数据库的代码
  • PHP自动加载autoload和命名空间的应用小结
  • php命名空间实用么,这样自动加载类的时候岂不是很麻烦,如果...
  • PHP怎么自动加载同一目录下同一命名空间的类文件?
  • php命名空间引入的类,类中的方法无法智能提示吗
  • PHP类的自动加载机制实现方法分析
  • PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定...
  • PHP进阶学习之类的自动加载机制原理分析
  • 实例讲解PHP中使用命名空间
  • PHP 自动加载的简单实现(推荐)
  • 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现...
  • php自动加载实现加载不同文件夹相同类名问题
  • 在PHP 7.2以后版本中可以通过什么函数实现自动加载函数?
  • PHP关键特性之命名空间实例详解
  • php命名空间需要require吗
  • php命名空间 use使用的问题:
  • PHP自动加载机制实例详解
  • PHP命令空间namespace及use的用法小结
  • thinkphp5 自动加载的类 怎么使用
  • thinkphp命名空间用法实例详解
  • PHP 5.3.1 运行新的类库 Class 'Carbon' not found 怎么加载这个...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧详细分析php 命名空间(namespace)php命名空间(namespace)原理与用法详解php 命名空间(namespace)原理与用法实例小结php命名空间namespace及use的简单用法分析php命名空间namespace的定义方法详解php命名空间namespace用法实例分析thinkphp autoload 命名空间自定义 namespacephp命名空间(namespace)的使用基础及示例php命名空间(namespace)简明教程php数组操作简单案例分析针对php开发安全问题的相关总结php7连接mysql实现简易查询程序的方法php 用checkbox一次性删除多条记录的方法php 将字符串按大写字母分隔成字符串数组php编程之微信公众平台企业号验证接口示例【回调操作】php获取类私有属性的3种方法php7安装yar扩展的方法详解php实现仿google分页效果的分页函数flash用php连接数据库的代码php中json_decode()和json_encode(php 数组和字符串互相转换实现方法php 字符串中是否包含指定字符串的多种方法php中使用curl实现get和post请求的方法php中iconv函数使用方法php日期转时间戳,指定日期转换成时间戳php 页面跳转到另一个页面的多种方法方法总结php中文处理 中文字符串截取(mb_substr)和获取中php下intval()和(int)转换使用与区别利用phpexcel实现excel数据的导入导出(全步骤详细php 模拟post提交的2种方法详解php实现仿写codeigniter的购物车类thinkphp中的curd应用实用要点php基于gd库画五星红旗的方法php二分查找算法示例【递归与非递归方法】php面向对象分析设计的61条军规小结php实现表单提交数据的验证处理功能【防sql注入和xss攻击等】php统计目录中文件以及目录中目录大小的方法php实现读取和写入tab分割的文件sqlyog 中文乱码问题的设置方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved