namespace关键字(引用当前空间)和__NAMESPACE__魔术常量之间的区别和联系

原创 2019-01-26 19:08:32 346
摘要:<?php//全局空间显示,不写名称即可//__NAMESPACE__在命名空间中的代码显示实例namespace one;//常量const SITE = '我的网站';//函数function hello(){ return '学习使人进步!';}//类class House{ public static $area =133;}echo '当前空

<?php

//全局空间显示,不写名称即可

//__NAMESPACE__在命名空间中的代码显示实例

namespace one;

//常量

const SITE = '我的网站';

//函数

function hello()

{

return '学习使人进步!';

}

//类

class House

{

public static $area =133;

}

echo '当前空间名称是:',__NAMESPACE__,'<br>';

echo '访问常量:',namespace\SITE,'<br>';

echo '访问函数:',hello(),'<br>';

echo '访问类:',House::$area,'<br>';

echo '<hr>';


namespace two;

//引用one中的内容,可以直接访问

// use one\House;

const DOMAIN ='www.php.cn';

echo '当前命名空间是:',__NAMESPACE__,'<br>';

echo '域名是:',DOMAIN,'<br>';

//全局空间用反斜线

echo '访问命名空间one中的常量:',\one\SITE,'<br>';

echo '面积:',\one\House::$area,'<br>';




// //子空间中定义的函数可以和系统函数重名

// //声明MyProjectOne空间

// namespace MyProjectOne

// {

// //输出MyProjectOne

// echo __NAMESPACE__,'<br>';

// class F

// {


// public static function index()

// {

// return __METHOD__;

// }

// }

// //子空间声明和系统函数同名的函数

// //在命名空间中,当前函数优先于系统全局函数的执行,全局函数加反斜线

// function var_dump($name)

// {

// echo '我是子命名空间中的和系统函数重名的var_dump()函数:' . $name;

// }

// // //输出自定义子命名函数

// // var_dump();//等于\MyProjectOne\var_dump();

// $name = 'php中文网';

// echo '<hr>';

// //系统函数

// var_dump($name);//全局函数调用加反斜线:\var_dump($name)

// echo '<hr>';

// }






// //声明MyProjectTwo空间

// namespace MyProjectTwo

// {

// echo __NAMESPACE__,'<br>';

// class H

// {


// public static function index()

// {

// return __METHOD__;

// }

// }

// //访问全局中的Q中的index()方法无法访问,必须加反斜线

// echo \Q::index();

// }



// //声明全局命名空间

// namespace

// {

//     echo strlen(__NAMESPACE__),'<br>';

//     //全局中声明方法

//     class Q

// {


// public static function index()

// {

// return __METHOD__;

// }

// }


//     //全局状态下访问子空间MyProjectOne空间和MyProjectTwo空间,可以直接访问

//     echo MyProjectOne\F::index(),'<br>';

//     echo MyProjectTwo\H::index(),'<br>';



// }

魔术常量__NAMESPACE__的值是包含当前命名空间名称的字符串。关键字 namespace引用当前空间,可用来显式访问当前命名空间或子命名空间中的元素,它等价于类中的 self 操作符。

批改老师:天蓬老师批改时间:2019-01-27 08:51:50
老师总结:导入外部空间, 本质是给一个空间起个别名罢了, 切记, 空间别名, 不能代替文件加载语句

发布手记

热门词条