命名空间学习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php // php四大开发成员 常量,函数,类(接口) 默认是声明在全局空间中的 // 优点:全局调用 // 缺点:不能重复命名 // 命名空间 namespace // function demo() // { // } // function demo() // { // } //报错 class UserController{ } class UserModel{ } class UserView{ } class UserCenterView{ } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php // namespace需要写在脚本的顶部 必须是php的第一条指令(除了declare指令) /** *namespace ns1{ * } * namespace ns2{ *} * 全局空间 * namespace{ * } * **/ namespace one{ function demo() { echo '我是one空间中的demo()函数<br>' ; } } namespace two{ function demo() { echo '我是two空间中的demo()函数<br>' ; } demo(); // 在two空间中调用one空间中的demo() \one\demo(); } //全局函数 namespace { function demo() { echo '我是全局空间中的demo()函数<br>' ; } \demo(); \one\demo(); \two\demo(); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php namespace phpcn\cart; class demo { public static function getSite() { return 'php中文网进阶课购物车<br>' ; } } echo Demo::getSite(); // 查看类的完全限定名称 echo Demo:: class ; //phpcn\cart\Demo namespace phpcn\order; class Demo { public static function getSite() { return 'php中文网进阶课订单<br>' ; } } echo Demo::getSite(); // 在一个空间中访问另一个子空间中的成员 需要先回到全局空间再进入子空间 echo \phpcn\cart\Demo::getSite(); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php // 子空间和公共空间中存在同名的全局成员 函数 类 优先级 子空间>全局空间 function func1() { echo '我是公共空间中的函数' . __FUNCTION__ , '<br>' ; } class Test { const APP_NAME = 'my blog' ; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php namespace php\ns\one; require 'dome.php' ; function fun1() { echo __NAMESPACE__; } function var_dump( $name ) { echo '早上好!' . $name ; } class Test{ const APP_NAME = 'taobao' ; } fun1(); //php\ns\one var_dump( '罗月喵' ); echo Test::APP_NAME; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php // use 在命名空间中的作用 // 1.use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名 // 2.use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名 namespace app\admin\controller; // 控制器类 index class 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::index echo '<hr>' ; // 使用use导入别的空间中的类 可以为该类起别名 // use app\admin\controller\Index as Index; use app\admin\controller\Index as In; // echo (new Index)->index(); echo ( new In)->index(); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php // 传统方式 // require 'app/admin/controller/Login.php'; // require 'app/admin/controller/User.php'; // require 'app/admin/model/Login.php'; // require 'app/admin/model/User.php'; // 引入类的自动加载器 只是加载类文件 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(); ?> |
1 2 3 4 5 6 7 8 9 10 | <?php namespace app\admin\controller; class Login { } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php namespace app\admin\controller; // 控制器 User文件 想使用User model use app\admin\model\User as UserModel; class User { public function index() { $res = UserModel::getInfo(); return $res ; } }<?php namespace app\admin\model; class User { static function getInfo() { return '获取到用户信息' ; } } ?> <?php // 类的自动加载 // spl_autoload_register(function($className){ // // 先检查要加载的类 // echo $className.'<hr>'; // // 将类的命名空间与类文件所在的路径保持一一映射 linux / window \ // $file = str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php'; // echo $file; // if(!(is_file($file) && file_exists($file))) // { // throw new \Exception('文件名不合法或者不存在'); // } // require $file; // // require $className.'.php'; // }); spl_autoload_register( function ( $class ){ require $class . '.php' ; }) ?> ?> |
1 2 3 4 5 6 7 8 9 10 | <?php namespace app\admin\model; class Login { } ?> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~