php命名空间

本文详细介绍了PHP语言中的命名空间,包括其作用、常量和函数的声明与访问规则,空间引入和公共空间的概念,以及如何通过限定名称、完全限定名称和引入机制来处理同名元素冲突。
摘要由CSDN通过智能技术生成

命名空间

在php语言里面,语法规则同名的函数、类名、常量在一个请求里不允许出现多次,如果有的程序不得以必须出现

同名的函数、类名、常量,可以吧它们放到不同的空间里面做请求,这个空间就是命名空间

命名空间针对函数、类名、常量起作用,统称为元素

常量声明

define(key,val);//忽略命名空间

const key=val; //受命名空间影响

访问元素

  1. 默认当前空间(挨着最近的空间)(非限定名称)
  2. 访问其他空间的元素 空间名元素(完全限定名称)
  3. 访问当前空间子空间的元素 当前空间子空间名元素 (限定名称) 当前空间和子空间名拼接

引入机制(降低空间书写复杂度)

空间引入
use a\b\c\d;
echo d\fun(); //通过限定名称方式访问(限定名称是引入空间名的最后一级名称)
元素引入(只能引入类)
use a\b\c\d\类名;
echo 类名::$name; //非限定名称访问
如果当前空间有元素和引入的元素重名,应该给引入的元素起别名
use a\b\c\d\类名 as 类名X;
echo 类名X::$name; //非限定名称访问
公共空间(无namespace关键字)
  • 在有命名空间的设置的程序中访问用 元素
  • 通过非限定方式访问:先找当前空间元素(没有再找公共空间)
注意
  1. 第一个namespace前面不能有任何代码(header也要写在下面)
  2. 命名空间名称可以重复,但是同名空间里不能有同名元素

例子

<?php
    //namespace 空间名
    namespace space1;

    const USER='root';
    function a(){
        echo 'a';
    }

    namespace space2;

    const USER='admin';
    function a(){
        echo 'b';
    }
    
    //默认当前空间(挨着最近的空间)
    a();
    echo USER;


    //访问其他空间的元素
    \space1\a();
    echo \space1\USER;
    

    echo '<hr>';
    

    //多级空间
    namespace xian\yanta\yuhua;

    class stu{
        public $name='xiaobai';
        static $age='12';
    }

    namespace xianyang\liquan\junma;

    class stu{
        public $name='xiaohei';
    }

    //访问当前空间
    $stu=new stu();
    echo $stu->name;

    //访问其他空间
    $stu=new \xian\yanta\yuhua\stu();
    echo $stu->name;

    echo '<hr>';

    namespace d1;
    
    function e(){
        echo 'e';
    }
    
    namespace d2\a;
    function e(){
        echo 'e2';
    }

    namespace d2;
    
    function e(){
        echo 'e1';
    }
    //1.非限定名称
    e();

    //2.完全限定名称
    \d1\e();

    //3.限定名称(自动拼接空间名)
    a\e();

    echo '<hr>';
    //空间引入
    use xian\yanta\yuhua;  //引入空间
    $stu=new yuhua\stu();  //限定名称方式访问
    echo $stu->name;

    echo '<hr>';
    //元素引入(仅类)
    use xian\yanta\yuhua\stu;
    echo stu::$age; //非限定名称访问
?>
									

作者:zpfei

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAI JIAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值