批改状态:合格
老师批语:希望坚持下去, 作业完成的很出色
(1)关键字:
-namespace:命名空间(必须写在脚本的第一行)
-__NAMESPACE__:魔术常量,返回当前空间名称
-__CLASS__:返回一个“完全限定名称”的类名称
-__FUNCTION__:返回一个“完全限定名称”的函数名
-__METHOD__:返回一个“完全限定名称”的类中方法名
-::CLASS:返回具有完全限定的类名
(2)导入和别名:
a、导入关键字:use \完全限定名称的全局成员(默认从全局开始,可以省略\)
b、常见的加载函数:include|require 导入不同于加载
c、别名:use \demo as de;(如果导入的成员名字和别名名字一直,可以省略as,直接使用),别名用具解决导入后的命名冲突。
一、
1.完全限定名称:从全局空间开始查找、类似绝对路径 例如:use \part1\Demo\function
2.限定名称:从当前空间开始查找,类似相对路径 例如:use namespace\Demo\function
3.非限定名称:仅在当前空间进行查找,类似当前路径 例如: use Demo\Class
二、
1、非限定名称和限定名称可以直接转化成完全限定名称,
2、非限定名称主要使用在同命名空间下,不同脚本之间成员访问。
3、限定名称主要使用在,在同命名空间下,不同子命名空间中成元的访问,(至少有一个‘\’,不能在开头)
4、完全限定名称,主要使用在不同命名空间之间称员的访问,从根空间开始查找必须有‘\’开头
三、
1、导入关键字:use (加载:include|require)
在脚本中加载外部脚本后,为了简化成员的调用和使用,可以用use关键字直接导入成员,然后就可以直接使用(不需要在写冗长的完全限制名称了.
别名关键字:as 解决导入简化完全限定名称造成命名冲突 例如:use \part1\Demo as Demo;
四、
1、::class:直接返回的完全限定的类名,而__NAMESPACE__:直接返回的当前空间名称
2、在php代码中,一般都是直接调用的类,很少单独调用空间的,所以一般都时直接使用::class,但有些时候考虑到命名空间名称修改,可以使用:__NAMESPACE__.\Demo\function;
php文件1:demo0.php
<?phpnamespace part1\con;//常量const SITE='中文网';//在php7+允许define创建数组常量,但不支持命名空间define('CITY',['name'=>'中国','time'=>'2020']);namespace part1\func;//函数function sum(int $a,int $b):string {return '$a*$b='.($a*$b);}namespace part1\cla;// 类class Demo {public $city='郑州';public $age;public function __construct($age){$this->age=$age;}public function get_info(){return '我在'.$this->city.$this->age.'年';}}// $a=new Demo(5);// $c=$a->get_info();// echo $c;//接口namespace part1\api;interface Itest {public static function hello();}
代码
<?php// 匿名类:只是用一次namespace part1;echo (new class ('李老师'){public $name;// 构造方法public function __construct($name){$this->name = $name;}})->name;echo '<br>';// 类型约束:函数和方法参数和返回值function sum(int $a,int $b):string {return '$a+$b='.($a+$b);}$c= sum(5,10);echo $c.'<br>';echo __NAMESPACE__;echo '<hr>';// 四类全局称员的访问方式echo "<h1>四类全局称员的访问方式</h1>";require 'demo0.php';$s= \part1\con\SITE;$s1= CITY['time'];$f= \part1\func\sum(3,5);echo $s,$s1;echo $f.'<br>';use \part1\cla\Demo;$C=new Demo(5);echo $C->get_info();echo '<br>';class Test implements \part1\api\Itest{public static function hello(){return __FUNCTION__;}}$a=Test::hello();echo $a;// 导入四类全局成员及别名的使用echo "<h2>导入四类全局成员及别名的使用</h2>";//别名和导入成员名字一样,可以省略;use const \part1\con\SITE;echo SITE;use function \part1\func\sum as ride;echo ride(3,5);echo $s,$s1;echo $f.'<br>';use \part1\cla\Demo as D;$C=new D(5);echo $C->get_info();echo '<br>';use \part1\api\Itest as I;class Test1 implements I{public static function hello(){return __FUNCTION__;}}$a=Test1::hello();echo $a;

1、导入常量和函数时:use 要跟const和function,然后在跟完全限制名称
2、导入的成员的别名和成员名一样时,可以省略as别名,直接使用;
3、全局成员有:类、接口、函数、常量
4、class_implements();:查询接口
6、self::class:返回当前类的完全限定名称;
7、define()可以设置数组常量,默认在全局空间(php7+);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号