没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|行业资讯|编辑:龚雪|2015-01-13 10:01:45.000|阅读 666 次
概述:命名空间是一种封装事物的方法,本文简单介绍命名空间及其理解与应用。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
什么是命名空间?“从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。”——命名空间概述
从本质上讲,命名空间就是一个容器,这个容器内我们可以放入类、函数和变量,他们在同一命名空间内可以无条件相互访问。在命名空间之外,就必须引用或者导入其他命名空间,才能调用它们包含的这些项。
命名空间跟shell中的文件目录的概念是一样一样的。在当前目录下可以直接用文件名访问所有文件,如果需要访问其他目录下的文件,就需要输入相对路径或绝对路径。
引用方式:
namespace foo;
class Foo {
public function foo()
{
return \top\namespace\bar\Bar::fuck();
}
}
导入方式:
namespace foo;
use top\namespace\bar\Bar;
class Foo {
public function foo()
{ return Bar::fuck();
}
}
导入就相当于将目的类复制一份到当前命名空间中。
命名空间的存在是为了解决下面两个问题:
1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
1. 同一个空间下的类直接相互直接调用,属于一家。例如 Laravel 中的 PageController 类中可以直接写 Page::all() 这样的代码来调用 Page 这个model,因为他们俩都在顶级命名空间下。
2. 若一个类存在于非顶级命名空间中,那么它只能在调用同样是当前命名空间下的其他类才不用“引用”或“导入”,它们属于一家。任何子命名空间都是另一个命名空间,另一个容器,没有除了容器之间关系之外的任何特殊关系。
3. Laravel 采用 classmap 方式进行自动加载(autoload),PHP虽然有了命名空间这个高级特性,但是这只是逻辑关系,require 文件还是要有的。这个类和文件的对应关系就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都会重新编译、生成。
更多新体验,欢迎试用JetBrains旗下的各种Web开发工具(包括PHPIDE)。另外还有5折限时抢购和免费领iPhone 6、iPad air等好礼!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。
嵌入式软件测试工具Parasoft C/C++test 聚焦高可靠性系统开发,提供核心能力三重保障:在编码阶段左移拦截缺陷降低修复成本;自动检查MISRA/CERT/AUTOSAR等安全标准确保合规性;AI智能测试动态优化用例覆盖深度。三者协同构建嵌入式软件质量防护体系,适用于车载、航天等安全关键领域。
企业级软件测试方案Parasoft C/C++test通过预置模板实现快速落地,利用 Docker 镜像固化测试环境确保一致性,并借助一键式集成能力简化复杂流程。帮助团队实现无缝协作与高效交付,避免陷入重复的配置与调试泥潭。
企业级软件测试方案Parasoft dotTEST通过聚合所有质量实践数据,提供一站式质量视图,帮助团队高效识别风险、优化流程,并加速高质量软件的交付。
本文将为大家介绍SciChart在助力蛋白质结构研究中发挥的作用,欢迎下载最新版组件体验~
IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。
ReSharper屡获大奖且被誉为世界上著名的VS代码生成工具
RubyMineRubyMine 集合了Ruby 和 Rails的整合开发 IDE
YouTrackYouTrack 是一款创新性的以键盘操作为主的问题和项目跟踪工具
PhpStormPhpStorm是一款智能的PHP IDE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号