近日,PHP官方已将拥有众多新特性的PHP5.3放到A3版本. 在更新日志中强调了这一版本的名字空间部份变化较大.
正好前段时间我开发的工业快捷框架SmartYU用到了5.3 A2中的不少特性,其中就包括了名字空间.所以将两者做了一些比较.
发现不得不对之前的名字空间部份全部推翻重写 :( (看来在发行版本未稳定之前,最好还是不要轻易尝试用其做项目).
首先说定义.
创建一个名字空间,都是通过在文件头部 使用namespace保留关键字定义.
A2版的定义方式是 namespaces SYU::Kernel::Module 的形式
A3版的定义方式是 namespaces SYU\Kernel\Module 的形式
相较而言,A2版的子空间分隔符是 :: 比A3的 \ 多一个字符,另外在使用类静态方法时会跟静态方法的操作符:: 相同,容易引起一些不必要的麻烦.
比如 SYU::DB::Connect( ) 的形式,时常会让人分不清到底该是调用SYU::DB类的Connect( )方法,还是该调用SYU::DB::Connect类的构造函数.
A3使用 \ 符 类似于win下的路径分隔符,好处就是__autoload自动载入的时候 :-) .但不好的地方在于如果名字空间出现在字符串中,须注意转义. 一会儿两根斜线,一会儿用一根斜线.感觉还是有些混乱.
一但定义了名字空间.自定义以下的部份,函数,类,都属于此名字空间
- <?php
- namespacetest;
-
functionstrlen(){return"i'mhere!";};
-
classpdo{};
-
echostrlen();
-
echo\strlen(strlen());
- ?>
定义名字空间时,需要注意的地方是 namespace定义必须在脚本文件的顶部声明(同一脚本文件可以申明多个名字空间,但第一个申明必须在脚本文件的头部,)
例如
唯一能在namespace前的例外是控制结构中的declare和不起任何作用的原子语句
- <?php
-
declare(encoding='GB2312');
- namespacetest;
- ?>
- <?php
- 1;
- namespacetest;
- ?>
其次,A3增加了名字空间内的const ,这在A2版中是没有的.
- <?php
- namespacetest\sayhello;
-
constt='hello';
- ........
- ?>
那么在其它的程序里可以使用 echo \test\sayhello\t 这样的方式来显示 t的值.结果将打印出 hello
这跟类中的const定义是差不多的..
再者,A2版中,同一脚本文件只能定义一次名字空间,而从A3开始,允许在同一个PHP脚本文件内,定义多个名字空间,
定义的方法有好种:
1是简单定义
- <?php
- namespacen1;
-
constn1_const=1;
-
functiontest(){echo"n1";}
- namespacen2;
-
constn2_const=1;
-
functiontest(){echo"n2";}
- \n1\test();
- \n2\test();
- ?>
2是花括号界定
- <?php
-
- namespacen1
- {
-
constn1_const=1;
-
functiontest(){echo"n1";}
- }
- namespacen2
- {
-
constn2_const=1;
-
functiontest(){echo"n2";}
-
Functionstrlen(){}
- }
-
- namespace
- {
- \n1\test();
- \n2\test();
-
- }
- ?>
着重注意的一点时.一但一个脚本文件被定义了名定空间,那么不允许有任何代码是在名字空间之外.
除了在第一部份讲的declare结构,连空格都不允许.
如果用的第一种简单定义法.没有花括号界定.那么最后一个namespace定义将一直延伸到整个脚本文件结束.
但如果用花括号界定名字空间.则千万要注意在PHP结束(而不是整个脚本文件结束)的后面.不能再有其它东西.
比如下例就是错误的演示
- <?php
- namespacetest
- {
-
- }
- ?><spaces>
未完待续........
本文章由syu于csdn首发
QQ:19179816
MSN:peteryu@live.cn
分享到:
相关推荐
Bootstrap 5.3.0-alpha1是该框架的一个预发布版本,它提供了最新的功能和改进,以帮助开发者更高效地创建用户界面。 Bootstrap的核心特性包括一系列预先设计的组件,如导航栏、按钮、表单、模态框、网格系统等,...
PHP 5.3.0 x64 是一个针对64位操作系统的PHP版本,它专为处理大量数据和高内存利用率的应用程序设计。这个版本在2009年发布,引入了许多新特性,改进和优化,使其成为当时企业级开发的重要选择。 1. **64位支持**:...
这个压缩包“bootstrap-5.3.0-alpha1-dist.rar”包含了Bootstrap 5.3.0 Alpha 1版本的分布文件,让我们深入探讨一下这个版本中可能包含的内容及其相关知识点。 首先,Bootstrap 5.3.0是一个预发布版本,这意味着它...
通过"说明.pdf",开发者可以学习如何有效地使用Bootstrap 5.3.0,而"bootstrap-5.3.0-alpha1-dist" 提供了可以直接在项目中使用的预编译文件。这个压缩包为开发者提供了一个强大且易用的工具集,加速了响应式网页...
Bootstrap 5.3.0-alpha1是一个预发布版本,意味着它是正式稳定版发布前的测试版本,开发者可以通过这个版本提前体验新特性、修复和改进。在这个阶段,开发团队可能仍在对新功能进行调整和完善,因此在生产环境中使用...
PHP 3.0是较旧的版本,而PHP 5.3.0引入了许多新的特性和改进,例如命名空间、晚期静态绑定和改进的错误处理。 压缩包中的子文件名提供了关于安装和运行此PHP版本所需的组件: 1. "go-pear.bat" - 这是一个批处理...
Anaconda3-5.3.0 Windows最新版安装包,下载后可直接运行
Anaconda3-5.3.0-Windows-x86_64是专门为64位Windows操作系统设计的版本,5.3.0代表了该发行版的版本号。 这个压缩包"Anaconda3-5.3.0-Windows-x86_64.rar"由清华大学的镜像站点提供,这确保了用户可以快速、稳定地...
标题 "php-5.3.0-Win32-VC6-x86.zip" 指的是PHP的一个特定版本,即5.3.0,它适用于Windows 32位操作系统,且是用Visual C++ 6 (VC6) 编译器编译的。这个版本的PHP通常用于在Windows服务器上搭建Web开发环境,支持...
在处理中文字符时,GBK编码比UTF-8更为节省空间,但在多语言环境中可能会遇到兼容性问题。 三、系统功能详解 1. 用户管理:PHPDisk提供注册、登录、密码找回等功能,管理员还可以设置不同级别的用户权限,如普通...
QT5.3.0登陆Demo是一个基于QT5.3.0版本的登录示例项目,主要展示了如何在Qt环境中创建一个基本的用户登录界面。这个Demo涵盖了Qt编程的基础知识,包括UI设计、信号与槽机制、事件处理以及数据验证等核心概念。 首先...
Anaconda3-5.3.0-Windows-x86.exe
PHP 5.3.0是PHP的一个重要版本,引入了命名空间(Namespaces)、晚期静态绑定(Late Static Bindings)、闭包(Closures)等新特性,同时提高了性能和错误处理机制。这一版本还增强了面向对象编程的支持,以及对...
在这个版本中,我们可能会发现一些性能优化、新特性、bug修复以及对旧版本的改进。 1. **ECharts 图表类型**: ECharts 支持多种图表类型,包括柱状图、折线图、饼图、散点图、K线图、地图、力导向图等。这些图表...
在OpenLayers 5.3.0版本中,可能引入了以下关键变化和改进: 1. **性能提升**:优化了渲染速度,尤其是在处理大量图层和特征时。 2. **新功能**:可能添加了对新的地图服务或数据格式的支持,比如新型的瓦片服务...
【PHP 5.3 (5.3.0) VC6 x86 Non Thread Safe】是PHP的一个特定版本,适用于32位(x86)系统,并且是基于Visual C++ 6 (VC6)编译器构建的非线程安全(Non Thread Safe,NTS)版本。这个版本在设计时并未考虑多线程...
"PenTablet_5.3.0-3"便是这样一款针对手绘板的专业驱动程序,它旨在优化手绘板在电脑及其他设备上的使用体验,实现硬件与软件的无缝对接。 手绘板驱动是连接硬件设备(手绘板)与操作系统之间的桥梁,它的主要作用...
官网最新版Anaconda3-5.3.0-Windows-x86_64安装包,百度云下载
在QT5.3.0中,多线程是一个重要的特性,它允许程序在不同的执行路径上同时运行多个任务,从而充分利用多核处理器的性能,提高程序的响应速度。 多线程在QT5.3.0中的实现主要是通过`QThread`类。`QThread`是QT提供的...
3. **类型(Type)**:在一个索引中定义文档的结构,但自 Elasticsearch 6.0 起已被废弃,所有文档都属于单个 `_doc` 类型。 4. **节点(Node)**:运行 Elasticsearch 实例的服务器,多个节点组成一个集群。 5. **...