PHP5正式发布
期待已久的PHP5终于在当地时间7月13日正式发布了。无论对于PHP语言本身还是PHP的用户来讲,PHP5发布都算的上是一个里程碑式的版本。在PHP5发布之前的各个PHP版本就以简单的语法、丰富的库函数以及极快的脚本解释执行速度,赢得了许多开发者的青睐,几乎成了*NIX平台上首选的WEB开发语言。然而,站在语言本身角度,PHP的语法,特别是OO方面的语法设计并不完善,当然这和PHP语言的作者一开始的设计目的有关。众说周知,PHP最开始只是一个用Perl写成的一个模板系统,其后的发展思路也是尽可能为快速开发WEB程序提供方便。大量的库函数加入其中,而语言模型的发展则相对缓慢。虽然在PHP4中加入了面向对象的设计,但其语言模型并不完善,缺乏诸如构造函数、析构函数、抽象类(接口)、异常处理等基本元素。这极大限制了利用PHP来完成大规模应用程序的能力。
而PHP5的诞生,则从根本上改变了PHP的上述弊端。Zend II 引擎的采用,完备对象模型、改进的语法设计。终使得PHP成为一个设计完备、真正具有面向对象能力的脚本语言。我们预计,PHP5的出现,将会给整个 PHP社区带来新的一轮各种库、应用开发改进的高峰。
PHP5 新特性(总概)
PHP5.0版本强化了以下功能。首先,完全实现面向对象。PHP4版本中以深拷贝为缺省值的对象代入,在PHP5中变为以浅拷贝为缺省值。因此,PHP5并非与PHP4完全兼容,不过,提供名为PHP兼容模式的功能。
其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了XML Web服务支持,而且标准支持SOAP扩展模块。
数据库方面,PHP新版本提供旨在访问MySQL的新界面--MySQLi。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能。另外,PHP5.0上还捆绑有小容量RDBMS--SQLite。
PHP5 新函数
来源 / Zend 翻译 / EasyChen@phpe
PHP5
中新添了一些函数,下边是它们的列表:
Arrays:
array_combine() - 使用一个数组作为索引,另一个数组作为值来创建一个新数组
array_diff_uassoc() - 使用用户提供的回调函数比较数组的相异程度(使用额外的索引检查)
array_udiff() - 使用回调函数比较数组的相异程度
array_udiff_assoc() - 比较数组的相异程度(使用额外的索引检查)。数据通过回调函数比较。
array_udiff_uassoc() - 比较数组的相异程度(使用额外的索引检查)。数据通过回调函数比较;索引检查也由回调函数完成。
array_walk_recursive() - 调用一个用户定义函数对数组的每个元素进行遍历。
InterBase:
ibase_affected_rows() - 返回前一个query中生效的row数
ibase_backup() - 在service manager中初始化一个backup任务,并立即返回
ibase_commit_ret() - 在不关闭的情况下,Commit一个事务
ibase_db_info() - 取得数据库的状态
ibase_drop_db() - Drop一个数据库
ibase_errcode() - 返回错误代码
ibase_free_event_handler() - 取消一个已注册的事件句柄
ibase_gen_id() - 添加named generator并返回新值
ibase_maintain_db() - 执行维护命令
ibase_name_result() - 将一个名字指定到一个结果集
ibase_num_params() - 返回prepared query中参数的个数
ibase_param_info() - 返回一个prepared query中一个参数的信息
ibase_restore() - 在service manager中初始化一个restore任务并立即返回
ibase_rollback_ret() - Rollback一个事务,并保留事务的上下文(context)
ibase_server_info() - 取得一个数据库的信息
ibase_service_attach() - 连接到service manager
ibase_service_detach() - 和service manager断开
ibase_set_event_handler() - 注册一个事件的回调函数
ibase_wait_event() - 等待数据库事件
iconv:
iconv_mime_decode() - 解码一个MIME头
iconv_mime_decode_headers() - 对多个MIME头一次解码
iconv_mime_encode() - 形成一个MIME头
iconv_strlen() - 返回字符串的字符数
iconv_strpos() - 查找字符在串中第一次出现的位置
iconv_strrpos() - 查找字符在串中最后一次出现的位置
iconv_substr() - 取得字符串的一部分
Streams:
stream_copy_to_stream() - 在stream间复制数据
stream_get_line() - 用指定分隔符从stream中取得行
stream_socket_accept() - 接受由stream_socket_server() 创建的socket连接
stream_socket_client() - 打开 Internet 或者 Unix domain socket连接
stream_socket_get_name() - 取得本地或者远程 sockets的名字
stream_socket_recvfrom() - 从socket接受数据,无论是否连接
stream_socket_sendto() - 发送信息给一个socket,无论是否连接
stream_socket_server() - 创建一个Internet或者Unix domain socket
Other:
convert_uudecode() - 解码一个通过uuencode的字符
convert_uuencode() - 编码一个字符为uuencode
curl_copy_handle() - 复制一个cURL句柄,连同它的全部偏好(preferences)
dba_key_split() - 将一个键值(key)从string形式分割为数组形式
dbase_get_header_info() - 取得一个dBase数据库的头信息
dbx_fetch_row() - 从一个DBX_RESULT_UNBUFFERED标志置位的query-result取得row
fbsql_set_password() - 改变指定用户的密码
file_put_contents() - 将一个string写入一个文件
ftp_alloc() - 为将被上传的文件分配空间
get_declared_interfaces() - 返回一个包含了所有已声明的接口的数组
get_headers() - 取得服务器对一个HTTP请求返回的全部头数据
headers_list() - 返回发送的(或者准备发送的)头信息列表
http_build_query() - 生成一个URL编码的query串
idate() - 将本地时间/日期格式化为整型
image_type_to_extension() - 取得由getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype() 生成的图像类型的文件扩展名
imagefilter() - 自定义图像过滤
imap_getacl() - 取得指定mailbox的ACL
ldap_sasl_bind() - 使用SASL绑定LDAP目录
mb_list_encodings() - 返回所有支持的编码列表数组
pcntl_getpriority() - 取得进程的属性
pcntl_wait() - 等待或返回fork子进程的由waitpid() 系统调用定义的状态
pg_version() - 返回一个客户端,协议和服务器版本的数组
php_check_syntax() - 检查指定文件的语法
php_strip_whitespace() - 返回去除了注释和空白格的源代码
proc_nice() - 改变当前进程的属性
pspell_config_data_dir() - 更改语言数据文件
pspell_config_dict_dir() - 更改主单词列表
setrawcookie() - 发送一个不带URL编码值得cookie
snmp_read_mib() - 读取和解析一个MIB文件到MIB树
sqlite_fetch_column_types() - 返回一个包含特定表的列属性的数组
str_split() - 将字符转化为数组
strpbrk() - 查找一个串中字符的任何子集
substr_compare() - 字符串比较,二进制安全
time_nanosleep() - 延迟N纳秒