React Flux Redux思想
╔═════════╗ ╔════════╗ ╔═════════════════╗
║ Actions ║──────>║ Stores ║──────>║ View Components ║
╚═════════╝ ╚════════╝ ╚═════════════════╝
^ │
└──────────────────────────────────────┘
1.Flux:大致的过程是这样的,View层不能直接对state进行操作,而需要依赖Actions派发指令来告知Store修改状态,Store接收Actions指令后发生相应的改变,View层同时跟着Store的变化而变化。
举个例子:A组件要使B组件发生变化。首先,A组件需要执行一个Action,告知绑定B组件的Store发生变化,Store接收到派发的指令后改变,那相应的B组件的视图也就发生了改变。假如C,D,E,F组件绑定了和B组件相同的Store,那么C,D,E,F也会跟着变化。
2.Redux:
(1)reducer 实际上就是一个函数:(previousState, action) => newState。用来根据指定 action 来更新 state 。通过 combineReducers(reducers) 可以把多个 reducer 合并成一个 root reducer。
php curl get post方法
一、GET
$res=file_get_contents('http://www.vocp.cn')
二、POST
1.初始化
$ch=curl_init();
2.设置变量
//curl_setopt($ch,XXX)
curl_setopt($ch, CURLOPT_URL, "http://www.vocp.cn"); //指定url地址
curl_setopt($ch,CURLOPT_POST,1); //指定post方法,不指定就是get方法
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//直接返回的内容作为变量储存,而不是直接输出
curl_setopt($ch,CURLOPT_POSTFIELDS,array('name'=>'Lilei','sex'=>'man')) //参数
3.执行获取结果
$res=curl_exec($ch)
4.释放句柄
curl_close($ch)
php关于API版本控制方案(Larvel)
利用头信息中的 HTTP_ACCEPT 控制版本号,再通过版本号来控制命名空间。HTTP_ACCEPT 添加版本号
version=1.0
在项目文件的laravelvendorlaravelframeworksrcIlluminateRoutingRouter.php 添加方法
//定义版本号与命名空间
protected $NameSpaceMap=array(
'v1.0'=>'v1',
'v2.0'=>'v2',
'v3.0'=>'v3',
);
public function getNameSpace()
{
$str=$_SERVER['HTTP_ACCEPT'];
$str=str_replace(';','&',$str);
parse_str($str,$array);
$version=$array['version'];
if(in_array($version,$this->NameSpaceMap)){
return $this->NameSpaceMap[$version];;
}
reset($this->NameSpaceMap);
return current($this->NameSpaceMap);
}
然后路由里面定义命名空间
Route::group(['namespace'=>Route::getNameSpace()],function(){
...
});
控制层目录这样放
最后的效果(ps:懒得写控制器了,命名空间对就好)
国外laravel api 案例 https://github.com/dingo/api