[thinkPHP5项目实战_03]子命名空间及命名空间的访问方式
文章 1932 0 0 0
发布时间:2019年02月16日

概述

1.子命名空间定义

PHP提供了层次化的空间命名方式,类似于一个虚拟目录,tp5会自动加载该命名空间

<?php
    namespace app1\pro1\item1;
    function func(){
        echo "func1";
    }
    const x = "name1";
?>

2.命名空间的三种访问方式

1)非限定名称访问

访问的元素前面不包含前缀,即访问当前定义的元素。

2)限定名称访问

访问的元素包含前缀名称,简单理解使用虚拟目录的相对路径访问方式

3)完全限定名称访问

访问的元素包含全局的命名空间前缀,理解为使用虚拟目录的绝对路径访问

举例说明:

<?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';
    }

    namespace app2\pro2;
    function func(){
        echo "func3";
    }
    const x = "name3";
    class Fruit{
        public $a = '苹果3';
        static $b = '菠萝3';
    }
?>

非限定名称访问,访问当前定义的元素

func(); //输出“func3”
echo x; //name3
$fruit = new Fruit;//实例化类
echo $fruit->a; //苹果3
echo Fruit::$b; //菠萝3

限定名称访问,访问当前定义元素下面的item2\topic2路径下的元素

item2\topic2\func(); //输出“func2”
echo item2\topic2\x; //name2
$fruit = new item2\topic2\Fruit;//实例化类
echo $fruit->a; //苹果2
echo item2\topic2\Fruit::$b; //菠萝2

完全限定名称访问

\app1\pro1\item1\func(); //输出“fun1”
echo \app1\pro1\item1\x; //name1
$fruit = new \app1\pro1\item1\Fruit;//实例化类
echo $fruit->a; //苹果1
echo \app1\pro1\item1\Fruit::$b; //菠萝1
评论专区
Q群
Q群
Q群
反馈
纠错
App