PHP 是一种新型的 CGI 程序编写语言,易学易用,运行速度快,可以方便快捷地编写出功能强大,运行速度快,并可同时运行于 Windows、Unix、Linux 平台的Web后台程序,内置了对文件上传、密码认证、Cookies 操作、邮件收发、动态 GIF 生成等功能,PHP 直接为很多数据库提供原本的连接,包括Oracle、Sybase、Postgres、Mysql、Informix、Dbase、Solid、Access 等,完全支持ODBC接口,用户更换平台时,无需变换 PHP 代码,可即拿即用 使用方法 弃用e修饰符 常见问题 php 函数调用的几种方式有哪些? 更新日志 Typed Properties 类型属性 类属性现在支持类型声明,以下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。 <?phpclassUser{ public int $id; public string $name;}?> Arrow Functions 箭头函数 箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。 <?php$factor = 10;$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);// $nums = array(10, 20, 30, 40);?> 将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。 // A collection of Post objects $posts = [/* … */];$ids = array_map(fn($post) => $post->id, $posts); Limited Return Type Covariance and Argument Type Contravariance 有限返回类型协变与参数类型逆变 仅当使用自动加载时,才提供完全协变/逆变支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。 <?phpclassA{}classBextendsA{}classProducer{ publicfunctionmethod(): A{}}classChildProducerextendsProducer{ publicfunctionmethod(): B{}}?> Unpacking Inside Arrays 打包内部数组 <?php$parts = ['apple', 'pear'];$fruits = ['banana', 'orange', ...$parts, 'watermelon'];// ['banana', 'orange', 'apple', 'pear', 'watermelon'];?> Numeric Literal Separator 数值文字分隔符 数字文字可以在数字之间包含下划线。 <?php6.674_083e-11; // float299_792_458; // decimal0xCAFE_F00D; // hexadecimal0b0101_1111; // binary?> Weak References 弱引用 弱引用使程序员可以保留对对象的引用,不会阻止对象被销毁。 Allow Exceptions from __toString() 允许从 __toString() 抛出异常 现在允许从 __toString() 引发异常,以往这会导致致命错误,字符串转换中现有的可恢复致命错误已转换为 Error 异常。 Opcache Preloading Opcache 预加载 新增 Opcache 预加载支持。
e修饰符是指示preg_replace函数用来评估替换字符串作为PHP代码,而不只是仅仅做一个简单的字符串替换。不出所料,这种行为会源源不断的出现安全问题。这就是为什么在PHP5.5 中使用这个修饰符将抛出一个弃用警告。作为替代,你应该使用preg_replace_callback函数。你可以从RFC找到更多关于这个变化相应的信息。
新增函数和类 接下来,我们将看到在计划之中的新增函数和类:
boolval()
PHP已经实现了strval、intval和floatval的函数。为了达到一致性将添加boolval函数。它完全可以作为一个布尔值计算,也可以作为一个回调函数。
hash_pbkdf2()
PBKDF2全称“Password-Based Key Derivation Function 2”,正如它的名字一样,是一种从密码派生出加密密钥的算法。这就需要加密算法,也可以用于对密码哈希。
如果您使用的是从apache.org PHP与Apache1或者apache2,您需要使用PHP的VC6的版本
如果您使用的是PHP与IIS,你应该使用PHP的VC9版本
VC6的版本是与传统的Visual Studio6编译器编译
VC9版本的Visual Studio 2008编译器编译,并在性能和稳定性的改善。
VC9版本需要你有微软2008的C ++运行时(x86)
Microsoft 2008 C++ Runtime (x86)
2008年微软的C ++运行时(64)安装
Microsoft 2008 C++ Runtime (x64)
不要使用VC9 apache.org二进制文件的版本
VC9 Apache的版本可以读取Apache的休息室。我们用自己的二进制文件,建立了Apache SAPIs。
最常见的函数调用:
1.
function userFunction1($param1, $param2){
echo 'UserFunction1: Param1 : ',$param1,' , Param2 : ',$param2,'
';
}
userFunction1('Hello','world');
2.
$userFunction2 = function($param1, $param2){
echo 'UserFunction2: Param1 : ',$param1,' , Param2 : ',$param2,'
';
};
$userFunction2('Hello', 'PHP');
作为回调函数的函数调用:
1.
function funcWithCallback1($callback, $param1, $param2){
echo 'funcWithCallback1 : ';
if(is_callable($callback)) $callback($param1, $param2);
}
funcWithCallback1($userFunction2,'Hello','world');
2.
call_user_func
function funcWithCallback2($callback, $param1, $param2){
echo 'funcWithCallback2 : ';
if(is_callable($callback)) call_user_func($callback, $param1, $param2);
}
funcWithCallback2($userFunction2,'Hello','world');