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 配合使用可以实现自动加载带有命名空间的类

更多相关文章

  1. php namespace命名空间详解
  2. 命名空间自动加载进阶与mysql初体验
  3. 命名空间的相关知识
  4. mysql语句、类的自动加载与引用
  5. php 命名空间的使用
  6. 命名空间与mysql入门
  7. 总结mysql 常用DDL, DML语言并实操与use在命名空间中的作用及实
  8. php变量命名规则及赋值
  9. 变量、常量、数据类型

随机推荐

  1. 数组与矩阵---需要排序的最短子数组长度
  2. 如何为Google Cloud Endpoints方法生成py
  3. pyuthon高级技巧2
  4. python闭包变量迟邦定
  5. 廖雪峰Python教程 学习笔记3 hello.py
  6. 如果前面的任务成功,芹菜会运行任务
  7. Python简介及入门
  8. 函数参数中裸星号的目的是什么?
  9. 用python写MapReduce函数——以WordCount
  10. cv2.createShapeContextDistanceExtracto