Blogger Information
Blog 16
fans 0
comment 0
visits 11220
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP命名空间
逃逃
Original
540 people have browsed it

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

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post