guzzlehttp/guzzle
composer require guzzlehttp/guzzle
你可以用guzzlehttp完全取代curl,file_get_content,fopen等函數。
php_curl
<?php
//初始化
$curl = curl_init();
//設置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//設置頭文件的信息作爲數據流輸出
curl_setopt($curl, CURLOPT_HEADER, 1);
//設置獲取的信息以文件流的形式返回,而不是直接輸出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//設置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//設置post數據
$post_data = array(
"username" => "coder",
"password" => "12345"
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//執行命令
$data = curl_exec($curl);
//關閉URL請求
curl_close($curl);
//顯示獲得的數據
print_r($data);
guzzlehttp
use GuzzleHttp\Client;
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'http://www.baidu.com', [
'form_params' => [
'username' => 'coder',
'password' => '12345'
]
]);
print_r($response);
jenssegers/date
composer require jenssegers/date
php_date
date("Ym", strtotime("-1 day")); //獲取前一天的日期
date("Ym", strtotime("+1 day")); //獲取後一天的日期
jenssegers_date
(new Date('-1 day'))->format ('Ym'); // 獲取前一天的日期
(new Date('+1 day'))->format ('Ym'); //獲取後一天的日期
複雜的日期計算中,它會更顯優勢
chumper/zipper
composer require chumper/zipper
使用這個包可以簡化php本身zip函數使用的複雜度
php_zip
<?php
$resource = zip_open($filename);
while($zip = zip_read($resource)) {
if(zip_entry_open($resource, $zip)) {
$file_content = zip_entry_name($zip);
$file_name = substr($file_content, strrpos($file_content, '/') +1);
if(!is_dir($file_name) && $file_name) {
$save_path = $dir .'/'. $file_name;
if(file_exists($save_path)) {
echo '文件夾內已存在文件 "' . $file_name . '" <pre />';
}else {
echo $file_name . '<pre />';
$file_size = zip_entry_filesize($zip);
$file = zip_entry_read($zip, $file_size);
file_put_contents($save_path, $file);
zip_entry_close($zip);
}
}
}
}
zip_close($resource);
chumper/zipper
Zipper::make('test.zip')->folder('test')->extractTo('foo');
anchu/ftp
composer require anchu/ftp
本包可以簡化php自身ftp上傳代碼的流程
php_ftp
<?php
$host = '10.0.0.42';
$user = 'uftp';
$pwd = 'uftp';
// 進行ftp連接,根據port是否設置,傳遞的參數會不同
if(empty($port)){
$f_conn = ftp_connect($host);
}else{
$f_conn = ftp_connect($host, $port);
}
if(!$f_conn){
echo "connect fail\n";
exit(1);
}
echo "connect success\n";
// 進行ftp登錄,使用給定的ftp登錄用戶名和密碼進行login
$f_login = ftp_login($f_conn,$user,$pwd);
if(!$f_login){
echo "login fail\n";
exit(1);
}
echo "login success\n";
// 獲取當前所在的ftp目錄
$in_dir = ftp_pwd($f_conn);
if(!$in_dir){
echo "get dir info fail\n";
exit(1);
}
echo "$in_dir\n";
// 獲取當前所在ftp目錄下包含的目錄與文件
$exist_dir = ftp_nlist($f_conn, ftp_pwd($f_conn));
print_r($exist_dir);
// 要求是按照日期在ftp目錄下創建文件夾作爲文件上傳存放目錄
echo date("Ymd")."\n";
$dir_name = date("Ymd");
// 檢查ftp目錄下是否已存在當前日期的文件夾,如不存在則進行創建
if(!in_array("$in_dir/$dir_name", $exist_dir)){
if(!ftp_mkdir($f_conn, $dir_name)){
echo "mkdir fail\n";
exit(1);
}else{
echo "mkdir $dir_name success\n";
}
}
// 切換目錄
if(!ftp_chdir($f_conn, $dir_name)){
echo "chdir fail\n";
exit(1);
}else{
echo "chdir $dir_name success\n";
}
// 進行文件上傳
$result = ftp_put($f_conn, 'bbb.mp3', '/root/liang/ftp/bbb.mp3', FTP_BINARY);
if(!$result){
echo "upload file fail\n";
exit(1);
}else{
echo "upload file success\n";
exit(0);
}
anchu/ftp
Config::set('ftp.connections.key', array(
'host' => '',
'username' => '',
'password' => '',
'passive' => false,
'secure' => false,
));
FTP::uploadFile($fileFrom,$fileTo,$mode)