Blogger Information
Blog 40
fans 1
comment 0
visits 31843
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用大括号语法实现在一个脚本中创建多个命名空间并访问成员0906
郭稳重啊的博客
Original
647 people have browsed it

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

Correction status:Uncorrected

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
Author's latest blog post