[thinkPHP5项目实战_04]命名空间的引入

1.为命名空间名称使用别名

即在命名空间中引入其他的命名空间,使用use操作符实现。

引入其他的命名空间后,使用只需在元素前面加上子命名空间的前缀即可,无需写上引入的全部空间名称

<?php
    namespace app1\pro1\item1; 
    header("content-type:text/html;charset=utf-8");
    function func(){
        echo "func1";
    }
    const x = "name1";
    class Fruit{
        public $a = '苹果1';
        static $b = '菠萝1';
    }
     
    namespace app2\pro2\item2\topic2;
    function func(){
        echo "func2";
    }
    const x = "name2";
    class Fruit{
        public $a = '苹果2';
        static $b = '菠萝2';
    }
     
    use app1\pro1\item1; //引入命名空间
    item1\func(); //func1
    echo item1\x; //name1
    echo item1\Fruit::$b; //菠萝1
    $fruit = new item1\Fruit;
    echo $fruit->a; //苹果1

在命名空间app2\pro2\item2\topic2引入了命名空间app1\pro1\item1,使用时在元素前加上子空间名称item1即可

2.为类名称使用别名

类在php中广泛使用,php提供专门针对引入命名空间中类的方式。

<?php
    namespace app1\pro1\item1; 
    header("content-type:text/html;charset=utf-8");
    function func(){
        echo "func1";
    }
    const x = "name1";
    class Fruit{
        public $a = '苹果1';
        static $b = '菠萝1';
    }
     
    namespace app2\pro2\item2\topic2;
    function func(){
        echo "func2";
    }
    const x = "name2";
     
    use app1\pro1\item1\Fruit; //引入命名空间中的类
    func(); //func2
    echo x; //name2
    //使用引入的命名空间的类元素
    echo Fruit::$b; //菠萝1
    $fruit = new Fruit;
    echo $fruit->a; //苹果1

在命名空间app1\pro1\item1中定义了类Fruit,在命名空间app2\pro2\item2\topic2中引入了上一个命名空间的类后,可以直接调用类元素

3.公共命名空间中引入其他命名空间

php中未定义命名空间的元素所在的空间为公共命名空间,公共命名空间引入其他命名空间的方式为include(),括号内填写路径。未明确前缀的调用将在当前空间寻找该元素,找不到再在命名空间找,再找不到就会报错;单个\前缀访问公共命名空间中的func()函数;使用引入的命名空间的元素,使用完全限定名称

举例说明:

定义一个test1.php文件,内容如下:

<?php
    namespace app1\pro1\item1;
    header("content-type:text/html;charset=utf-8");
    function func(){
        echo "func1";
    }
    const x = "name1";
    class Fruit {
        public $a = "苹果1";
        static $b = "菠萝1";
    }

在同级目录下新建一个test.php文件,引入test1.php:

<?php
    header("content-type:text/html;charset=utf-8");
    function func(){
        echo "func";
    }
    const x = "name";
    class Fruit{
        public $a = "苹果";
        static $b = "菠萝";
    }
    include("./test1.php");
    func(); //func 
    \func(); //func 
    \app1\pro1\item1\func(); //func1
     
     
    echo x; //name
    echo \x; //name
    echo \app1\pro1\item1\x; //name1
     
     
    echo Fruit::$b; //菠萝
    $fruit = new Fruit;
    echo $fruit->a; //苹果
     
     
    echo \app1\pro1\item1\Fruit::$b; //菠萝1
    $fruit1 = new \app1\pro1\item1\Fruit;
    echo $fruit1->a; //苹果1

--------------------- 

原文:https://blog.csdn.net/weixin_36185028/article/details/77050077 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值