php命名空间的理解
发布时间:2022-12-05 11:33:44 所属栏目:PHP教程 来源:
导读: 命名空间概述
这是只是大概讲一下用法,如果想详细了解,还是阅读官方手册比较好。
什么是命名空间?从广义上来说PHP命名空间,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念
这是只是大概讲一下用法,如果想详细了解,还是阅读官方手册比较好。
什么是命名空间?从广义上来说PHP命名空间,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念
命名空间概述 这是只是大概讲一下用法,如果想详细了解,还是阅读官方手册比较好。 什么是命名空间?从广义上来说PHP命名空间,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。 版本要求 php5.3.0以上,包含php5.3.0 开始讲解 新建a.php,b.php文件 ## 这是a.php namespace a\b\c; // 说明这个类存在于 a\b\c 这个命名空间下 class Apple{ function get_func(){ echo 'This is a'; } } ## 这是b.php namespace a\b\d; // 说明这个类存在于 a\b\d 这个命名空间下 class Apple{ function get_func(){ echo 'This is b'; } } 我们再新建一个test.php去调用上面这两个类 ## 这是test.php require_once "./a.php"; require_once "./b.php"; // 如果没有命名空间,直接引入,会报类重复的错误 // 那我们该如何实例化上面类呢? $apple_a = new a\b\c\Apple(); echo $apple_a->get_func(); // This is a // 这种方法是可以的,但是试想如果我们同个页面要多次实例化此类,这样是非常耗资源的。 ## 这是test.php require_once "./a.php"; require_once "./b.php"; use a\b\c\Apple; $apple_a = new Apple(); $apple_a1 = new Apple(); $apple_a2 = new Apple(); echo $apple_a->get_func(); // This is a echo $apple_a1->get_func(); // This is a echo $apple_a2->get_func(); // This is a // 这样写同样也是可以的,而且会比上面那种方法省资源 // 在这里思考一下,如果想执行b.php文件的类,该怎么执行呢? ## 这是test.php require_once "./a.php"; require_once "./b.php"; use a\b\c\Apple; $apple_a = new Apple(); .....(此处省略,上面重复)..... $apple_b = new a\b\d\Apple(); echo $apple_b->get_func(); // This is b // 如果我们也像使用上面那种方法引入b.php文件的类,该如何做到呢? ## 这是test.php require_once "./a.php"; require_once "./b.php"; use a\b\c\Apple; use a\b\d\Apple as BApple; // 如果想两个同名的类一起使用,就得给它赋个新类名 $apple_a = new Apple(); echo $apple_a->get_func(); // This is a $apple_b = new BApple(); echo $apple_b->get_func(); // This is b // 同样,这也成功输出了 这时我们新建一个c.php文件 ## 这是c.php class Apple{ function get_func(){ echo 'This is c'; } } // 我们没有在这个类文件下配命名空间 ## 这是test.php require_once "./a.php"; require_once "./b.php"; require_once "./c.php"; use a\b\c\Apple; .....(此处省略,上面重复)..... // 如果没有配命名空间,代表根类,就得这样实例化,就可以成功找到了 $apple_c = new \Apple(); $apple_c->get_func(); // This is c (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐