博主信息
博文 16
粉丝 0
评论 0
访问量 15707
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP命名空间
逃逃
原创
722人浏览过

PHP 命名空间

[toc] //md 内容表

php 四大全局成员 常量 函数 类(接口) 默认是声明在全局空间中的

1. 命名空间的优缺点

  • 优点 可以全局调用
  • 缺点 不能重复命名

2. 命名空间的实例

namespace 需要写在脚本的顶部 必须是 php 的第一条指令(除了 declare 指令)

  1. namespace phpcn\cart;
  2. class Demo
  3. {
  4. public static function getSite()
  5. {
  6. return 'php中文网进阶课购物车<br>';
  7. }
  8. }
  9. echo Demo::getSite();
  10. // 查看Demo类的完全限定名称
  11. // echo Demo::class;//phpcn\cart\Demo
  12. namespace phpcn\order;
  13. class Demo
  14. {
  15. public static function getSite()
  16. {
  17. return 'php中文网进阶课订单<br>';
  18. }
  19. }
  20. echo Demo::getSite();
  21. // 在一个空间中访问另外一个子空间中的成员 需要先回到全局空间再进入子空间
  22. echo \phpcn\cart\Demo::getSite();

子空间和公共空间中存在同名的全局成员 函数 类 优先级 子空间>全局空间

  1. function func1()
  2. {
  3. echo '我是公共空间中的函数'.__FUNCTION__,'<br>';
  4. }
  5. class Test
  6. {
  7. const APP_NAME = 'my blog';
  8. }

3. use 在命名空间中的作用

    1. use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
    1. use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名
  1. namespace app\admin\controller;
  2. // 控制器类 index
  3. class Index{
  4. public function index()
  5. {
  6. return __METHOD__;
  7. }
  8. }
  9. namespace extend\lib;
  10. // \ 代表根 root 空间
  11. // echo (new \app\admin\controller\Index)->index();//app\admin\controller\Index::index
  12. //1. use 导入命名空间
  13. use app\admin\controller;
  14. // 2. 成功导入命名空间以后 就可以不使用类的完全限定名称 来调用类元素
  15. echo (new controller\Index)->index();//app\admin\controller\Index::index
  16. // 3. 为空间起一个别名
  17. use app\admin\controller as app;
  18. echo (new app\Index)->index();//app\admin\controller\Index::index
  19. echo '<hr>';
  20. //使用use 导入别的空间中的类 可以为该类起别名
  21. // use app\admin\controller\Index as Index ;
  22. use app\admin\controller\Index as In ;
  23. // echo (new Index)->index();
  24. echo (new In)->index();

4. 自动加载带有命名空间的类

  1. namespace app;
  2. // 引入类的自动加载器 只是加载类文件
  3. require 'app/admin/autoload.php';
  4. // 起别名
  5. use app\admin\controller\Login;
  6. use app\admin\controller\User;
  7. use app\admin\model\Login as LoginModel;
  8. use app\admin\model\User as UserModel;
  9. $loginController = new Login;
  10. $loginModel = new LoginModel;
  11. $UserModel = new UserModel;
  12. $userController = new User;
  13. echo $userController->index();

总结

    1. use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
    1. use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名

use app\admin\model\Login as LoginModel;

    1. require 只能引入类文件

      require 'app/admin/autoload.php';

    1. require 和 use 配合使用可以实现自动加载带有命名空间的类
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学