Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:其实你感觉越难的知识 , 反而是最简单的, 因为越来越接近人类的思维模式了, 发明这些技术的也是普通人, 学习的时候, 一定要结合自己的体会
一开始这些概念没理解,看了两遍才理解,理解后再模仿实践代码
感觉现在进入了理解难点知识阶段了,一次看不懂就多看两遍,代码还是要写,自己亲手写出来真正印在脑子里!
<?php
//创建命名空间
namespace chapter01;
//1.完全限定名称访问类
require 'demo01.php';
$result = \chapter01\lib\Demo::index();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//2.完全限定名称访问接口
require 'demo04.php';
class Test01 implements \chapter01\api\iTest
{
public static function hello()
{
return class_implements(self::class);
}
}
$result = Test01::hello();
//2.完全限定名称访问接口
require 'demo04.php';
class Test01 implements \chapter01\api\iTest
{
public static function hello()
{
return class_implements(self::class);
}
}
$result = Test01::hello();
//2.完全限定名称访问接口
require 'demo04.php';
class Test01 implements \chapter01\api\iTest
{
public static function hello()
{
return class_implements(self::class);
}
}
$result = Test01::hello();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//3.完全限定名称访问函数
require 'demo02.php';
$result = \chapter01\common\getFuncName();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//4.完全限定名称访问常量
require 'demo03.php';
$result = \chapter01\constant\SITE_NAME;
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//访问全局空间中的常量
$result = \PHONE['name'] . ':' . \PHONE['price'];
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
<?php
//创建命名空间
namespace chapter01;
//1.导入完全限定名称的类
use chapter01\lib\Demo;
require 'demo01.php';
$result = Demo::index();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//2.导入完全限定名称的接口
use chapter01\api\iTest;
require 'demo04.php';
class Test01 implements iTest
{
public static function hello()
{
return class_implements(self::class);
}
}
$result = Test01::hello();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//3.导入完全限定名称的函数
require 'demo02.php';
use function chapter01\common\getFuncName;
$result = getFuncName();
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
//4.导入完全限定名称的常量
require 'demo03.php';
use const chapter01\constant\SITE_NAME;
$result = SITE_NAME;
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
<?php
//创建命名空间
namespace chapter01;
//别名引用方式
class User
{
//..
}
//为避免重名,将导入的类定义别名
require 'demo05.php';
use chapter01\admin\User as Users;
$result = Users::class;
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
echo '<hr>';
// 别名与当前完全限定名称的成员名称相同的时候, 可以省略
require 'demo06.php';
use chapter01\index\Index;
$result = Index::class;
// 格式化打印结果
echo '<pre>' . print_r($result, true) . '</pre>';
完全限定名称:从全局空间开始查找成员,类似绝对路径;
限定名称:从当前空间开始查找成员,类似相对路径;
非限定名称:仅在当前空间中查找成员,类似当前路径!
完全限定名称:具有完整命名空间名称
非限定名称: 类名称前不允许有\
限定名称:类名称前面至少有一个\
, 而且这个\
不是第一个字符
使用use语法将全局成员导入后, 在当前脚本中就不必再书写冗长的完全限定名称。
__NAMESPACE__
: 魔术常量, 返回当前命名空间,经常采用拼接方式使用, ::class
: 返回具有完全限定的类名;::class用于快速生成完全限定名称的类名!
$result = call_user_func([__NAMESPACE__ . '\lib\Demo', 'index']);
$result = Index::class;