zoukankan      html  css  js  c++  java
  • PHP 命名空间

    一、前言

    对于很多的PHP小白来说,命名空间是什么,为什么要声明命名空间呢?

    他们总是感到困惑!以下是本人的理解,望对童鞋们有所帮助。

    二、介绍

    命名空间是一个函数或者一个类的唯一标识。在流行的框架Lavaral,ThinkPHP,Yii等框架中,特别是结构复杂的文件层次和海量的代码中,相同的类名和函数名就容易使我们的程序抛出异常。于是,我们引进了命名空间的概念。

    结构如下:

    1 <?php
    2 namespace yii
    est;
    3 
    4 use yii
    estController;
    5 
    6 class ActiveController extends Controller
    7 {
    8  // ......
    9 }

    很显然我们可以看出, 命名空间的命名是 以我们项目的顶级目录为开始以路径的形式命名的。

    引入我们的命名空间是 use 短语句,另外也可以 直接以 1 yii estController 的形式使用。

    除了我们所说的避免海量代码出现重复,从而抛出异常的优点, 命名空间还可以配合魔术常量 __dir__ 和函数 dirname() 使用,来拼接我们的函数或类文件的绝对路径。

    在很多框架的底层我们经常可以看到 spl_autoload_register() 这个函数配合命名空间来加载类文件实现我们的代码逻辑。此函数是魔术方法__autoload()的实现。

    下面给出例子:

     1 <?php
     2 
     3 // function __autoload($class) {
     4 //       require_once 'dirname(__dir__)' .   "/{$class}.php";
     5 // }
     6 
     7 function my_autoloader($class) {
     8      require_once 'dirname(__dir__)' .   "/{$class}.php";
     9 }
    10 
    11 spl_autoload_register('my_autoloader');
    12 
    13 // 或者,自 PHP 5.3.0 起可以使用一个匿名函数
    14 spl_autoload_register(function ($class) {
    15     require_once 'dirname(__dir__)' .   "/{$class}.php";
    16 });

     

  • 相关阅读:
    初始化注解和销毁注解
    MySQL、SQLServer、Oracle 分组排序
    mybatis 中SQLServer 和 mysql 模糊查询 不同点
    SpringBoot学习之logback.xml 配置指定包或类输出至单独的日志文件中
    类比 RocketMq 和 淘宝消息服务:
    SVN提交文件失败:系统找不到指定路径
    官网下载MySQL 并安装
    Java 变量参数传入方法,方法结束后传入的值
    03-类与对象课后作业(1)
    02方法-课后动手动脑
  • 原文地址:https://www.cnblogs.com/cleverstone/p/9185177.html
Copyright © 2011-2022 走看看