Heredoc 的行为类似于一个双引号字符串:
$name = "MyName"; echo <<< TEXT My name is "{$name}". TEXT;Heredoc 以三个左尖括号开始,后面跟一个标识符(TEXT), 直到一个同样的顶格的标识符(不能缩进)结束。
就像双引号字符串一样,其中可以嵌入变量。
Heredoc 还可以用于函数参数,以及类成员初始化:
var_dump(<<<EOD Hello World EOD ); class A { const xx = <<< EOD Hello World EOD; public $oo = <<< EOD Hello World EOD; }Nowdoc 的行为像一个单引号字符串,不能在其中嵌入变量,和 Heredoc 唯一的区别就是,三个左尖括号后的标识符要以单引号括起来:
$name = "MyName"; echo <<< 'TEXT' My name is "{$name}". TEXT;输出:
My name is "{$name}". 用 const 定义常量PHP5.3 起同时支持在全局命名空间和类中使用 const 定义常量。
旧式风格:
define("XOOO", "Value");新式风格:
const XXOO = "Value";const 形式仅适用于常量,不适用于运行时才能求值的表达式:
// 正确 const XXOO = 1234; // 错误 const XXOO = 2 * 617; 三元运算符简写形式旧式风格:
echo $a ? $a : "No Value";可简写成:
echo $a ?: "No Value";即如果省略三元运算符的第二个部分,会默认用第一个部分代替。
PharPhar即PHP Archive, 起初只是Pear中的一个库而已,后来在PHP5.3被重新编写成C扩展并内置到 PHP 中。
Phar用来将多个 .php 脚本打包(也可以打包其他文件)成一个 .phar 的压缩文件(通常是ZIP格式)。
目的在于模仿 Java 的 .jar, 不对,目的是为了让发布PHP应用程序更加方便。同时还提供了数字签名验证等功能。
.phar 文件可以像 .php 文件一样,被PHP引擎解释执行,同时你还可以写出这样的代码来包含(require) .phar 中的代码:
require("xxoo.phar"); require("phar://xxoo.phar/xo/ox.php");更多信息请参见官网 [注].
注:
PHP5.4(2012-2013)
Short Open TagShort Open Tag 自 PHP5.4 起总是可用。
在这里集中讲一下有关 PHP 起止标签的问题。即:
通常就是上面的形式,除此之外还有一种简写形式:
还可以把
;?>简写成:
<?= $xxoo;?>这种简写形式被称为 Short Open Tag, 在 PHP5.3 起被默认开启,在 PHP5.4 起总是可用。
使用这种简写形式在 HTML 中嵌入 PHP 变量将会非常方便。
对于纯 PHP 文件(如类实现文件), PHP 官方建议顶格写起始标记,同时 省略 结束标记。
这样可以确保整个 PHP 文件都是 PHP 代码,没有任何输出,否则当你包含该文件后,设置 Header 和 Cookie 时会遇到一些麻烦 [注].
注:Header 和 Cookie 必须在输出任何内容之前被发送。
数组简写形式这是非常方便的一项特征!
// 原来的数组写法 $arr = array("key" => "value", "key2" => "value2"); // 简写形式 $arr = ["key" => "value", "key2" => "value2"]; Traits所谓Traits就是“构件”,是用来替代继承的一种机制。PHP中无法进行多重继承,但一个类可以包含多个Traits.
// Traits不能被单独实例化,只能被类所包含 trait SayWorld { { echo 'World!'; } } class MyHelloWorld { ; } $xxoo = new MyHelloWorld(); ();Traits还有很多神奇的功能,比如包含多个Traits, 解决冲突,修改访问权限,为函数设置别名等等。
Traits中也同样可以包含Traits. 篇幅有限不能逐个举例,详情参见官网 [注].
注:
内置 Web 服务器PHP从5.4开始内置一个轻量级的Web服务器,不支持并发,定位是用于开发和调试环境。
在开发环境使用它的确非常方便。
这样就在当前目录建立起了一个Web服务器,你可以通过 :8000/ 来访问。
其中localhost是监听的ip,8000是监听的端口,可以自行修改。
很多应用中,都会进行URL重写,所以PHP提供了一个设置路由脚本的功能:
这样一来,所有的请求都会由index.php来处理。
你还可以使用 XDebug 来进行断点调试。
细节修改PHP5.4 新增了动态访问静态方法的方式:
$func = "funcXXOO"; A::{$func}();新增在实例化时访问类成员的特征:
(new MyClass)->xxoo();新增支持对函数返回数组的成员访问解析(这种写法在之前版本是会报错的):
print func()[0]; PHP5.5(2013起)
yield