命名空间

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

这一生的挚爱 提交于 2019-12-01 00:30:21
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,但

PHP 命名空间 namespace / 类别名 use / 框架自动载入 机理的

穿精又带淫゛_ 提交于 2019-11-29 19:27:32
相比 PHP5.2 版本 PHP5.3 新增了三大主要新特性 命名空间 延迟静态绑定 lambda匿名函数 命名空间的出现也使PHP可以更加合理的组织项目结构,同时通过命名空间和自动载入机制一大批 PHP 的 MVC 框架也随之出现,明了的项目结构的同时也按需载入,进一步减轻内存压力,加快执行效率。 因为命名空间是对目录结构友好的 namespace Home\Controller; class IndexController { } 而 PHP5.2 之前是按造类的下划线去做类似 命名空间 的定义的 class Home_Controller_IndexController { } 一、 命名空间 及 USE 的本质 php 的 use 关键字并不是立刻导入所use的类,它只是声明某类的完整类名(命名空间::类标示符) ,而后你在上下文中使用此类时系统才会根据 use 声明获取此类的完整类名 然后利用自动加载机制进行载入 namespace Home\Controller; use Home\Model\User; use Home\Model\Order as OrderList; class IndexController { public function index() { //只有当你调用此类时,系统才会根据 use 声明获取此类的完整类名 然后利用自动加载机制进行载入