博客列表 >用大括号语法实现在一个脚本中创建多个命名空间并访问成员0906

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

郭稳重啊的博客
郭稳重啊的博客原创
2018年09月08日 20:16:50650浏览

0906作业

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

实例

<?php

/*
 * 1.编程: 用大括号语法实现在一个脚本中创建多个命名空间并访问成员
 * 
 * 如何让全局代码与用户空间代码和平共处?
 * 1.全局代码:之前我们是用\进行引用的
 * 2.用户代码:用namespace 进行标识
 * 3.用户自定义命名空间,在空间标识符后有一对花括号代码之前的分号,
 * 将属于该空间的代码全部放在花括号内
 * 4.全局空间的代码,使用一个没有标识符的namespace关键字加花括号即可,将
 * 全局代码放在这对没空间标识符的花括号内
 */

//1. 声明一个命名空间Score
namespace Score {

    class Student
    {
        public $name = '柯南';
    }

    const SITE = '期末考试成绩册';

    function sum($Chinese, $Math)
    {
        return $Chinese + $Math;
    }
 }

//2.声明命名空间: mark
namespace  mark {

    class Student{public $name='工藤新一';}

    const  SITE = '期末考试成绩册';

    function sum($Chinese, $Math)
    {
        return $Chinese + $Math;
    }
 }

//如果执行Score空间中的代码?
//这样可以吗?貌似可以,但实际不行的,
//原因是:如果当前脚本使用了命名空间,那么里面的全部代码都必须使用命名空间进行声明和访问
//echo (new \one\Demo())->name,'<br>';

//再声明一个命名空间test
namespace test {

//如果执行Score空间中的代码?
//这样可以吗?貌似可以,但实际不行的
    echo (new \Score\student())->name,'<hr>';

 }


//例子:但是我的本意并不是想再生成一个命名空间,我只是想在全局空间执行一下某个空间中的代码罢了
//这就好比,你去电脑城只想买一个鼠标,结果老板说,鼠标不单买,必须买个电脑,鼠标是赠送的,这显然是不合理的。

//原来默认就是全局空间,不用加反斜线
namespace {

    echo (new mark\student())->name,'<br>';

 }

运行实例 »

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

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

实例

<?php

/*
 * 2.编程:使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
 * 使用别名导入命名空间
 * use 关键字的使用
 */

//1. 声明一个命名空间score
namespace Score ;

//A\B\C\D\Student;
//如果当前类也有一个同名的student类,怎么办?为导入的类取一个别名
use A\B\C\D\Student as Student1;//导入空间中的类的信息会覆盖当前空间中类的信息

//此刻相当于class Student1{public $name='工藤新一';}
class Student
{
    public $name = '柯南';
}

const SITE = '期末考试成绩册';

function sum($Chinese, $Math)
{
    return $Chinese + $Math;
}
//在当前空间访问: A\B\C\D空间中类
//必须要添加很长的空间前缀
//echo (new A\B\C\D\S)->name;
//echo (new student)->name;

 echo (new Student1)->name;



//2.声明命名空间:A\B\C\D
namespace A\B\C\D;

class Student{public $name='工藤新一';}

const  SITE = '期末考试成绩册';

function sum($Chinese, $Math)
{
    return $Chinese + $Math;
}

运行实例 »

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

3. 问答: 非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
  非限定名称:类似当前目录下访问
  限定名称: 类似于相对路径访问
  完全限定名称:从全局空间开始,类似于从根目录开始

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