【转】PHP5.3亲测精华特性整理

1、引入 __DIR__ magic常量 定位脚本的目录

    echo __DIR__."|".dirname(__FILE__);


2、允许从2个值的or/and表达式快速的获取一个非空的值

    echo (1 ?: 0) ."|". ("" ?: 0)."|". var_export(array() ?: array(1), true);


3、类添加__callStatic方法,等价于 __call(),但它是为调用静态方法准备的。下面来看示例:


class xxx{
function __call($func, $args){
echo "function name:".$func;
echo "</br />";
echo "args:".var_export($args, true);
}
static function __callStatic($func, $args){
echo "static function name:".$func;
echo "</br />";
echo "static args:".var_export($args, true);
}
}
$x = new xxx();
$x->testfunc("oo");
echo "</br />";
xxx::teststatic("xx");


4、动态的调用静态的方法

 
class xx{
static function test(){
echo __METHOD__;
}
}
$c = "xx";
$m = "test";
$c::$m();


5、延迟静态绑定(静态处理从编译时延迟到执行时)


class A{
static function whoami(){
echo __CLASS__;
}

static function say1(){
self::whoami();
}

static function say2(){
static::whoami();
}
}

class B extends A{
static function whoami(){
echo __CLASS__;
}
}

class C extends A{
static function whoami(){
echo __CLASS__;
}
}

B::say1();
C::say2();


6、MySQLInd (高速的专门为PHP设计的MySQL调用库接口)
7、INI Magic
8、扩展的 OpenSSL 函数
9、SPL(Standard PHP Library) 优化
10、时间处理进行扩展了和添加

    
$date = strtotime("11-05-17 00:00:00");
echo date("Y-m-d", $date)."|";

$date = date_create_from_format("y-m-d", "11-05-17");
echo $date->format("Y-m-d");


11、垃圾回收器(为复杂和长时间运行脚本的执行结束周期释放内存的清理)

     
gc_enable(); // 允许垃圾回收
var_dump(gc_enabled()); // true

var_dump(gc_collect_cycles()); // 某个元素的清理

gc_disable(); // 禁止垃圾回收


12、NOWDOC(不对HEREDOC进行转译)


$fubar = "xxx";

$xbar = <<<ONE
this is HEREDOC $fubar
ONE;

$abar = <<<'TWO'
this is NOWDOC $fubar
TWO;
echo $xbar."|".$abar;


13、匿名函数体验


$ofun = create_function('$a, $b', 'return $a*$b;'); //不要忘了分号,传统方法
echo $ofun(2, 5);

$nfun = function ($a, $b){
return $a*$b;
};//不要忘了分号,现代方法

echo $nfun(3, 5);


14、闭包体验


$arr = array(1, 2, 3, 5, 6, 7);
$res = array_filter($arr, function($v) { return $v >4; });
var_dump($res);

function countnum(){
$num = 0;
$testt = function() use(&$num){
++$num;
echo $num;
};
return $testt;
}

$t = countnum();
$t();
$t();


15、命名空间


namespace xxx; //第一个namespace需要在所有输出之前
function t(){
return __NAMESPACE__;
}

namespace xxx;

function t(){
return __NAMESPACE__;
}

echo \xx\t()."|";
echo \xxx\t();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值