0013-PHP8 命名空间

PHP-教程   2023-04-18 18:40   647   0  

命名空间

  • 命名空间: 解决全局成员的命名冲突问题, 借鉴了文件目录的思想

  • 目录: 同一目录下不允许重名文件, 但不同目录下, 允许同名文件存在

  • 空间: 同一空间内不允许成员重名, 但不同空间内, 允许同名成员存在

1、命名空间

  • 解决全局成员的命名冲突问题

function php(){

}
function php(){

}

2、创建命名空间

  • 命名空间使用 "namespace" 关键字声明

namespace one{
function php(){

}
}
namespace two{
function php(){

}
}
namespace three;
function php(){

}

namespace four;
function php(){

}

3、常量、函数、类

namespace one{
const NAME = '小红';
$name = '小红';
function php(){

}
class phpcn{

}
}
namespace two{
const NAME = '小刚';
$name = '小刚';
function php(){

}
class phpcn{
 
}
}
namespace three{
echo $name;
echo NAME;
php();
new phpcn();
}

4、子命名空间

namespace{
const NAME = '小红';
function php(){

}
class phpcn{

}
}
namespace one{
const NAME = '小刚';
function php(){

}
class phpcn{
 
}
}
namespace one\two{
const NAME = '小刚';
function php(){

}
class phpcn{
 
}
}
namespace one\two\three{
const NAME = '小刚';
function php(){

}
class phpcn{
 
}
}

5、访问命名空间

  • use 关键字引用命名空间

  • AS 解决类名过长、重名问题

namespace one;
const NAME = '小红的常量';
function php(){
echo '小红的函数';
}
class phpcn{
public function fun(){
 echo '小红的类';
}
}

echo php();
echo '<hr>';
echo \two\php();
echo '<hr>';
echo \one\two\three\php();
echo '<hr>';
use \one\two\three as t;
echo t\php();
echo '<hr>';

namespace two;
const NAME = '小刚的常量';
function php(){
echo '小刚的函数';
}
class phpcn{
public function fun(){
 echo '小刚的类';
}
}


namespace one\two\three;
const NAME = '小王的常量';
function php(){
echo '小王的函数';
}
class phpcn{
public function fun(){
 echo '小王的类';
}
}

6、冲突

  • 新建目录文件:/one/one.php

<?php
namespace one\one;
const NAME = '小红的常量';
function php(){
 echo '小红的函数';
}
class phpcn{
 public function fun(){
  echo '小红的类';
 }
}
  • 新建目录文件:/two/one.php

<?php
namespace two\one;
const NAME = '小刚的常量';
function php(){
 echo '小刚的函数';
}
class phpcn{
 public function fun(){
  echo '小刚的类';
 }
}
  • 解决冲突

<?php
require 'one\one.php';
require 'two\one.php';
use one\one as o;
use two\one as t;

$php = new t\phpcn();
$php->fun();
echo '<hr>';
echo o\php();
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。