PHP 命名空间 [toc] //md 内容表 php 四大全局成员 常量 函数 类(接口) 默认是声明在全局空间中的 1. 命名空间的优缺点 优点 可以全局调用 缺点 不能重复命名 2. 命名空间的实例 namespa
PHP 命名空间
[toc] //md 内容表
php 四大全局成员 常量 函数 类(接口) 默认是声明在全局空间中的
1. 命名空间的优缺点
- 优点 可以全局调用
- 缺点 不能重复命名
2. 命名空间的实例
namespace 需要写在脚本的顶部 必须是 php 的第一条指令(除了 declare 指令)
namespace phpcn\cart;class Demo{public static function getSite(){return '自由互联进阶课购物车<br>';}}echo Demo::getSite();// 查看Demo类的完全限定名称// echo Demo::class;//phpcn\cart\Demonamespace phpcn\order;class Demo{public static function getSite(){return '自由互联进阶课订单<br>';}}echo Demo::getSite();// 在一个空间中访问另外一个子空间中的成员 需要先回到全局空间再进入子空间echo \phpcn\cart\Demo::getSite();
子空间和公共空间中存在同名的全局成员 函数 类 优先级 子空间>全局空间
function func1(){echo '我是公共空间中的函数'.__FUNCTION__,'<br>';}class Test{const APP_NAME = 'my blog';}
3. use 在命名空间中的作用
- use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
- use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名
namespace app\admin\controller;// 控制器类 indexclass Index{public function index(){return __METHOD__;}}namespace extend\lib;// \ 代表根 root 空间// echo (new \app\admin\controller\Index)->index();//app\admin\controller\Index::index//1. use 导入命名空间use app\admin\controller;// 2. 成功导入命名空间以后 就可以不使用类的完全限定名称 来调用类元素echo (new controller\Index)->index();//app\admin\controller\Index::index// 3. 为空间起一个别名use app\admin\controller as app;echo (new app\Index)->index();//app\admin\controller\Index::indexecho '<hr>';//使用use 导入别的空间中的类 可以为该类起别名// use app\admin\controller\Index as Index ;use app\admin\controller\Index as In ;// echo (new Index)->index();echo (new In)->index();
4. 自动加载带有命名空间的类
namespace app;// 引入类的自动加载器 只是加载类文件require 'app/admin/autoload.php';// 起别名use app\admin\controller\Login;use app\admin\controller\User;use app\admin\model\Login as LoginModel;use app\admin\model\User as UserModel;$loginController = new Login;$loginModel = new LoginModel;$UserModel = new UserModel;$userController = new User;echo $userController->index();
总结
- use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
- use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名
use app\admin\model\Login as LoginModel;
- require 只能引入类文件
require 'app/admin/autoload.php';
- require 只能引入类文件
- require 和 use 配合使用可以实现自动加载带有命名空间的类
PHPzhong批改状态:合格
老师批语:
