博客列表 >创建多个命名空间并访问成员+使用use导入其他类+非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系

创建多个命名空间并访问成员+使用use导入其他类+非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系

Belifforz的博客
Belifforz的博客原创
2018年09月10日 14:23:051167浏览

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

实例

<?php

namespace Demo1
{
    const APP_NAME = 'PHP';

    class Goods
    {
        public $name = '苹果';

        public static function eat($name= '')
        {
            return $name.'可以吃';
        }
    }

    echo APP_NAME,'<br>';
    echo (new Goods)->name,'<br>';
    echo Goods::eat('苹果'),'<hr>';


}


namespace Demo2\Demo3
{
    const NameSpances = '我是Demo2下的Demo3空间';
}


namespace Demo2
{
   const APP_NAME = 'HTML';

    class Goods
    {
        public $name = '香蕉';

        public static function eat($name = '')
        {
            return $name.'可以吃';
        }
    }

    echo APP_NAME,'<br>';
    echo (new Goods)->name,'<br>';
    echo Goods::eat('葡萄'),'<hr>';
    echo Demo3\NameSpances;
}

运行实例 »

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


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

实例

<?php
//这是demo1文件
namespace Demo1;

    const APP_NAME = 'PHP';

    class Goods
    {
        public $name = '苹果';

        public static function eat($name= '')
        {
            return $name.'可以吃';
        }
    }

    function what()
    {
        return '这是Demo1命名空间下的函数';
    }

运行实例 »

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

实例

<?php
//这是demo2文件
namespace Model;

require 'demo1.php';

use Demo1\Goods as ClassName;
use const Demo1\APP_NAME as NAME;
use function Demo1\what  as func;
class Test1
{
    public static function test()
    {
        return __METHOD__;
    }
}

echo Test1::test(),'<hr>';

echo ClassName::eat('西瓜'),'<hr>';
echo NAME,'<hr>';
echo func();

运行实例 »

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


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


这三者给我的感觉就像   相对路径与绝对路径  这样;

非限定名称:或不包含前缀的类名称,就是名称本身;

限定名称:或包含前缀的名称,名称本身前要加上前缀;

完全限定:或包含了全局前缀操作符的名称,就是从根全局开始写的名称


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议