Blogger Information
Blog 48
fans 0
comment 0
visits 40784
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间的学习—2018年09月06日22时00分
小星的博客
Original
795 people have browsed it

今天是第二十天上课,朱老师讲了命名空间的概念,比较好理解。

重要知识点:1. 各个命名空间之间的分隔符是反斜线 \ 

                    2. 如果当前脚本声明了命名空间,则所有成员的访问,就必须使用命名空间,包括系统函数。

                    3. 全局空间用 \ 表示。

                    4. 命名空间的三种使方式方式:非限定名称,限定名称和完全限定名称。

                    4. use导入的使用。

  1. 用大括号语法实现在一个脚本中创建多个命名空间并访问成员

    代码:

    实例

    <?php
    namespace One{
        const NAME = '这是One下的常量';
    
        class Class1
        {
            public static function demo1()
            {
                return '这是在命名空间One下的类Calss1中的方法'.__METHOD__;
            }
        }
    }
    
    namespace Two\Three{
        const NAME = '这是Two\Three下的常量<br>';
    }
    
    namespace Two{
        echo Three\NAME;//这里开头不用加\,因为Three是Two的子空间
    
        echo \One\NAME;
    
        echo \One\Class1::demo1();//访问类
    
        echo __NAMESPACE__,'<br>';
        //echo namespace\ONE\NAME;//这是不行的,namespace就代表当前命名空间
        echo namespace\Three\NAME;
    }

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  2. 使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问

    demo1.php

    实例

    <?php
    namespace Test1;
    require 'demo2.php';
    use Test2\Class2;//导入test2中的class2类
    use Test2\Class1 as Newclass;//导入test2中的class1类,,因为和当前命名空间的Class1冲突,所有用了as来设置一个别名
    use Test4\Test3\Test3\Test1 as hello; //太长的就用别名比较方便
    
    
    class Class1
    {
        public static function demo2()
        {
            return __METHOD__.'<br>';
        }
    }
    
    echo \Test2\NAME.'<br>';
    echo \Test2\show().'<br>';
    echo Class2::demo2();
    echo Newclass::demo2();

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

    demo2.php

    实例

    <?php
    namespace Test2;
    const NAME = '这是Test2下的常量';
    class Class2
    {
    
        public static function demo2()
        {
            return __METHOD__.'<br>';
        }
    }
    class Class1
    {
        public static function demo2()
        {
            return __METHOD__.'<br>';
        }
    
    }
    function show()
    {
        echo '这是Test2下的函数';
    }

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  3. 非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?

    非限定名称:省略命名空间,默认为当前命名空间。

    限定名称:使用命名空间前缀。

    完全限定名称:从全局(根)空间开始访问。


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments