函數式編程javascript
<?php
/*
函數式編程
在php中,使用$fname() 這樣的思路能夠實現, 也能夠 call_user_func('phpinfo');
*/
classHSController{
publicstaticfunction login()
{
echo "login in!!";
}
}
$action=$_GET['action'];
//先要檢車下這個類中是否有這個方法 使用php的反射機制檢查
$reflectionClass=new reflectionClass('HSController');
if(!$reflectionClass->hasMethod($action))//檢查類中是否有該方法
{
echo $action.' is not found!';
exit();
}
//檢查該方法是不是靜態方法
$reflectionMethod=$reflectionClass->getMethod($action);
if(!$reflectionMethod->isStatic())
{
echo $action.' is not a static function!';
exit();
}
HSController::$action();
?>
<?php
/*
lambda表達式
在php 5.3以前
是使用 create_function('',);
*/
create_function('$a','return addcslashes(trim($a));');
//至關於構造一個下面的函數
function lambda_1($a)
{
return addcslashes(trim($a));
}
//create_function 會建立一個 lambda_數字的一個臨時函數
//在php5.3 php 便開始真正的支持閉包 lambda也就更好用了
$data=range(0,10);
//更接近javascript的lambda語法
$newData=array_map(function($v){
$a=range(0, $v);
return array_sum($a);
}, $data);
function outer()
{
$a=11;
returnfunction()use($a){
//閉包
echo $a;
};
}
$inner=outer();
$inner();
print_r($newData);
?>