2019独角兽企业重金招聘Python工程师标准>>>

php自5.3以后引入了命名空间namespace这一特性使得php在面向对象设计的过程中更加规范清晰,同时在框架的架构中自动载入模式也完全尽齐用来提高框架自身的性能--按需载入

无命名空间声明其实为在根命名空间下

<?php
/**
* 命名空间为Project
* 则类的完整名为 Project\Web 而不是Web
*/namespace Project;class Web
{function __construct(){echo __NAMESPACE__ . '<br/>';echo __CLASS__ . '<br/>';}
}
//若不已'\'开头则为使用当前命名空间下的类
new Web();
//当然我们可以指出完整的类名来 \Project\Web 为根命名空间下的Project命名空间下的Web类
new \Project\Web();
?>

1、若当前无命名空间声明,则默认在根命名空间'\'下

2、若当前存在命名空间生命,则默认的类实例化时都是此命名空间为前提,除非使用use声明某类的完整类名

比如

<?php
namespace Web;
use Common\Tools as CommonTools;class Tools {
}
//如同linux的路径
//当前目录为 usr, 则 local 意味当前目录usr下的local,但 /var 则意味根目录下的 var
new Tools(); //从当前为命名空间Web开始,所以Tools的完整类名为Web\Tools
new \Common\Tools(); //从根命名空间'\'开始,访问的是Common\Tools
new CommonTools(); //因为使用了use声明,就如同将\Common\Tools 别名成 CommonTools?>

其实php的use声明并不是将此类导入到当前工作区域,而是单单指明

use Web\Tools;

Tools的类名是Web\Tools

当你new的时候他才会检查当前工作区中有没有这个类,没有的话就会检测有没有写自动载入函数

若也没有的话那就报错了,否则会调用你的自动载入函数

将你要实例化的完整类名传递进去

new Tools(); //这时会实例化名为Web\Tools的类,若没有include进来,且有些自动载入函数,则会将Web\Tools传递给次函数,你可以通过传递的类名做自己的引入处理

框架大都是根据类名做路径映射

比如Yii框架

//当前命名空间
namespace app\Controllers;
//声明Controller为yii\web命名空间下的,此后若有用到Controller的地方,完整名皆为yii\web\Controller
use yii\web\Controller;
//继承也会要求解析此类,所以当前工作目录会要求检查是否有yii\web\Controller的类,可惜没有
//但系统会在给你一次几乎,看是否有自动加载函数,Yii当然有,传递给加载函数'yii\web\Controller'
作为参数
//加载函数解析类名发现是以yii开头的,则做路径映射,将yii\web\Controller映射为其框架类库文件的路径
//即vendor\yiisoft\yii2, 拼接上web\Controller 拼接上.php后缀,就获取到了这个文件
//文件里保存的类的命名空间为yii\web,类名为Controller
class IndexController extends Controller {}

转载于:https://my.oschina.net/sallency/blog/520284

简单概述PHP的命名空间及其在自动载入上的应用相关推荐

  1. Hadoop的简单概述以及架构

    Hadoop的简单概述以及架构 1.hadoop概述:hadoop是一个适合海量数据分布式存储和分布式计算的平台. 2.hadoop是一个统称,hadoop主要包含三大组件: (1)hdfs:是一个分 ...

  2. php命名空间namespace自动载入

    php的命名空间仅仅提供了一个逻辑上的类的隔离空间,我们在引用类时,仍要自己实现自动载入.思路就是使用一个未引入的类时,php自动触发spl_autoload_register这个方法,然后就会根据命 ...

  3. 8086CPU相关汇编语言的简单概述

    8086CPU相关汇编语言的简单概述 1.寄存器 通用寄存器 8806CPU给出物理地址的方法 段寄存器 修改CS,IP的指令 2.寄存器(内存访问) 栈机制 3.[BX]和loop指令 [BX] l ...

  4. SpringSecurity的简单概述以及配置SpringSecurity的默认登录页面

    SpringSecurity的简单概述 是什么:SpringSecurity融合Spring技术栈,提供JavaEE应 用的整体安全解决方案:提供全面的安全服务 有什么用:可以进行身份验证,就是证明你 ...

  5. 垃圾回收器(简单概述)

    垃圾回收器(简单概述) GC分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今衍生 ...

  6. PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入

    ① PHP 面向对象高级特性 ② 11 种 PHP 设计模式 ③ PSR-0,Composer,Phar 等最流行的技术 目标是掌握 PHP 各类设计模式,以及具备设计纯面向对象框架和系统的能力 [命 ...

  7. php 类加载其它类,PHP 命名空间 namespace / 类别名 use / 框架自动载入 机理的

    相比 PHP5.2 版本 PHP5.3 新增了三大主要新特性 命名空间 延迟静态绑定 lambda匿名函数 命名空间的出现也使PHP可以更加合理的组织项目结构,同时通过命名空间和自动载入机制一大批 P ...

  8. XSS漏洞简单概述--UGa

    XSS漏洞简单概述–UGa 个人笔记向,请多指点 *简介 XSS作为OWASP TOP 10之一,XSS被称为跨站脚本攻击(Cross-site scripting) ,本来应该缩写为CSS,但是由于 ...

  9. 关于“7个好习惯”的简单概述

    Title: 关于"7个好习惯"的简单概述 Content: 同事发给的,共勉. 下面是关于"7个好习惯"的简单概述,与大家分享一下,希望对大家.对我们的团队有 ...

  10. 计算机底层:计算机层次结构(高级语言到低级语言的简单概述)

    计算机底层:计算机层次结构(高级语言到低级语言的简单概述): 操作系统可以有效地分配任务给cpu,控制硬件进行搞效率地使用等等,创造操作系统主要是为了满足两大需求:提高资源利用率.增强计算机系统性能. ...

最新文章

  1. solr5.5.4 添加mysql数据,实现同步更新
  2. python 运算太慢怎么办_python:网络安全攻击与防御的工具
  3. AI芯片之争白热化的当下,如何设计一款真正适用于终端的AI芯片?
  4. Linux系统编程@文件操作(一)
  5. 采用HttpModules来重写URLs(实践篇)
  6. 利用Matlab求解线性规划问题
  7. wxWidgets:wxResourceTranslationsLoader类用法
  8. 虚拟机克隆,并设置新的ip,配置hostname,配合hostname,hosts
  9. 2018.11.07-1015-幸运字符串查询 (lucky)
  10. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_2 Mybatis中编写dao实现类的使用-保存操作...
  11. 面向对象程序设计——总结作业
  12. 查看计算机ping,通过ping命令检测主机的存活性
  13. css--小米商城----logo与home图标切换
  14. Mosek学习笔记2:优化
  15. vmware workstation网络设置
  16. TAOCP_2.3.1_遍历二叉树
  17. 找到某个关键字 同义词词林 python_3.6 什么是LSI关键字?为什么它对SEO很重要?...
  18. coreldraw2019天气滤镜_CorelDRAW2019快捷键大全
  19. ORACLE 10G DATAGUARD
  20. List1_Excise

热门文章

  1. sqlserver替换特殊字符
  2. GIT每次上传代码都必须输入用户名解决方案
  3. Python Selenium打开谷歌浏览器
  4. mips 系统桥_系统功能调用实现简单输入输出(mips)
  5. 喜庆:上周阅读量5W,超过了99%的C友
  6. 梦到两个人辞职,一男一女
  7. 申请AppleID的界面,连继续按钮都看不到
  8. 给兆芯出主意:开发一批新指令,交叉授权
  9. 假期最后一天,出差赶到天津
  10. 无锡美景:踏过樱花第几桥