PHP-命名空间
使用场景
大部份情况都须要多个文件才可以业务,这都会出现类名冲突的情况发生,命名空间可以解决这类问题人。
在操作系统中目录用来将文件管理,它就饰演了命名空间的角色。比如文件foo.txt可以同时在目录/home/Greg和/home/other中存在,但在同一个目录中不能存在两个foo.txt文件。另外,在目录/home/greg外访问foo.txt文件时,我们必须将目录名以及目录分隔符置于文件名之前得到/home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
基本使用
默认情况下常量、类和函数名都置于全局空间下。命名空间通过来申明。
必须定义在文件腹部,并在(=1)句子下边。
.php
function sum()
{
return 'helper sum';
}
test.php
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
子命名空间
PHP命名空间也容许指定层次化的命名空间的名称,如app\方式,通常情况下我们将层次与目录结构匹配。
namespace App\Controller;
class Bootstrap
{
public function make()
{
return __METHOD__;
}
}
引入形式非限定名称
调用类时没有指定命名空间时,将使用当前命名空间。
下边在使用User时没有指定命名空间将使用当前命名空间。
namespace App;
class User
{
public function make()
{
return __METHOD__;
}
}
$user = new User;
echo $user->make();
限定名称
Order.php
namespace App\Controller;
class Order
{
public static function make()
{
return __METHOD__;
}
}
Test.php
namespace App;
include 'Order.php';
class User
{
public static function make()
{
return __METHOD__;
}
}
echo Controller\Order::make();
使用限定名称调用Order类,系统会使用当前命名空间加上做为Order类的命名空间。
完全限定名称
类似于文件系统中的绝对路径,以下边的代码为例,调用Order类时可以使用以下的完全限定形式。
echo \App\Controller\Order::make();
常量
常量的值是包含当前命名空间名称的字符串。
使用关键字
别称引入
通过操作符use来为类或命名空间使用别称。
基本使用
App
--Controller
-- Comment.php
-- User.php
boot.php
boot.php
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
0
假如使用useApp\,在引入User类时方式如下
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
1
别称
在引入多个同名类时会有冲突情况发生,可以通过起别称的方法处理。
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
2
多个引入
可以使用多行use或用冒号分隔多个类(空间)方式处理多个导出的情况。
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
3
使用冒号分隔
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
4
往年的手动加载函数早已在php7.2废弃使用,所以使用r函数完成手动加载处理。
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
5
使用类方式实现
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
6
使用是后盾人建议使用的方法,相关视频早已在上更新,下边详尽介绍使用技巧。
项目初始
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
7
更改配置文件
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
8
安装与更新
更改配置文件后执行生成,假如更改过配置文件须要执行。
配置
在项目中使用以下代码即可完成手动加载。
namespace Houdunren;
include 'helper.php';
function sum()
{
return 'houdunren sum';
}
# 使用当前命名空间中的sum
echo sum();
# 使用 helper.php 中的sum
echo \sum();
9
以上内容希望帮助到你们,好多PHPer在进阶的时侯总会碰到一些问题和困局,业务代码写多了没有方向感,不晓得该从哪里入手去提高,对此我整理了一些资料,包括但不限于:分布式构架、高可扩充、高性能、高并发、服务器性能调优、TP6,,YII2,Redis,、Swoft、Kafka、mysql优化、shell脚本、、微服务、nginx等多个知识点中级进阶干货须要的可以免费分享给你们,须要
>>视频、面试文档免费获取">