php namespace的用法:【namespace article;】,表示创建一个名为article的命名空间。需要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码。
命名空间一个最明确的目的就是解决重名问题,php中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。
(推荐教程:php视频教程)
命名空间将代码划分出不同的空间(区域),每个空间的常量、函数、类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念。
创建一个命名空间需要使用namespace关键字,这样:
<?php//创建一个名为'article'的命名空间namespace article;?>要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,下面的写法都是错误的:
例一
//在脚本前面写了一些逻辑代码<?php$path = "/";class comment { }namespace article;?>例二
</html><?phpnamespace article;?>为什么要说第一个命名空间呢?因为同一脚本文件中可以创建多个命名空间。
下面我创建了两个命名空间,顺便为这两个空间各自添加了一个comment类元素:
<?php//创建一个名为'article'的命名空间namespace article;//此comment属于article空间的元素class comment {}//创建一个名为'messageboard'的命名空间namespace messageboard;//此comment属于messageboard空间的元素class comment {}?>在不同空间之间不可以直接调用其它元素,需要使用命名空间的语法:
<?phpnamespace article;class comment {}namespace messageboard;class comment {}//调用当前空间(messageboard)的comment类$comment = new comment();//调用article空间的comment类$article_comment = new \\\\article\\\\comment();?>可以看到,在messageboard空间中调用article空间里的comment类时,使用了一种像文件路径的语法: \\\\空间名\\\\元素名
除了类之外,对函数和常量的用法是一样的,下面我为两个空间创建了新的元素,并在messageboard空间中输出了它们的值。
<?phpnamespace article;const path = '/article';function getcommenttotal() { return 100;}class comment {}namespace messageboard;const path = '/message_board';function getcommenttotal() { return 300;}class comment {}//调用当前空间的常量、函数和类echo path;///message_boardecho getcommenttotal();//300$comment = new comment();//调用article空间的常量、函数和类echo \\\\article\\\\path;///articleecho \\\\article\\\\getcommenttotal();//100$article_comment = new \\\\article\\\\comment();?>然后我的确得到了article空间的元素数据。
相关推荐:php培训
新买的腾讯云服务器进不了系统阿里云服务器ecs续费代金券如何访问小米路由器硬盘 如何远程访问小米路由的无线硬盘虚拟主机云服务器租赁费用云服务器无法访问web应用为什么有的服务器可以不用备案?云服务器建站软件原理图云网站服务器安全风险