顯示具有 PHP 標籤的文章。 顯示所有文章
顯示具有 PHP 標籤的文章。 顯示所有文章

2022年10月21日 星期五

清量級的 XLSX 工具 (PHP版本)

PHP_XLSXWriter 

第二連結 : 避免最後倉庫丟失

        include BASE_PATH . "XlsxWriter.php";
        $headerRow = [];
        $file = $filename;

        $file = str_replace('.xls', '.xlsx', $file);

        # 要使用方案2
        $path =  '../api/data/resources/xlsx/';
        if (!file_exists($path)) {
            mkdir($path, 0777, true);
            $path = $path . $filename;
        } else {
            $path = $path . $filename;
        }

        $writer = new \XLSXWriter();
        # 風格一
        $styles1 = array(
            'font' => 'Arial',
            'font-size' => 12,
            'border' => 'left,top,bottom'
        ); 
        # 配置標題      
        foreach ($data[0] as $key => $value) {
            $headerRow[$value] = '@';
        }
        unset($data[0]);
        $writer->writeSheetHeader('Sheet1', $headerRow, [
            'halign' => 'center',
            'font-size' => 14,
            'border' => 'left,top,bottom',
            'widths' => [40, 20, 20, 25, 25],
        ]);
        foreach ($data as  $key1 => $row) {
            $writer->writeSheetRow('Sheet1', $row, $styles1);
        }
        # 方案一
        header('content-disposition:attachment;filename=' . $file);    //告訴瀏覽器通過何種方式處理檔案
        $writer->writeToStdOut();
        exit;
        # 方案二
        # 這個是 先產實體文件 , 再刪除
        // $writer->writeToFile($path);
        // header('content-disposition:attachment;filename=' . $file);    //告訴瀏覽器通過何種方式處理檔案
        // header('content-length:' . filesize($path));    //下載檔案的大小
        // readfile($path);
        // unlink($path);
        // exit;

2022年10月9日 星期日

PHP 黑科技

節省寫法時間

 

<?php

$array = [
    'name' => 1,
    'phone' => 12345678911
   
];

$arr_key = [
    'name' , 'phone'
];

// 黑科技
foreach ($arr_key as $key => $value) {
   $$value  =  $array[$value] ;
}
echo $name . $phone ;

// 另一個寫法就是
list('name'=>$name ,'phone'=>$phone) = $array ;

?>


這樣寫可以 省去還要 寫一堆 set 的代碼
當然相對地就不是好閱讀
建議還是寫在 func , class 這些 內部邏輯


2019年12月18日 星期三

Clear Cache in Laravel

Clear Cache in Laravel
第一次遇到 route 被 Cached...........................................
最快解法
Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "Cache is cleared";
});

2019年12月12日 星期四

PHP~當客戶端喔

一個寧靜的下午
遇到一個要由PHP 當 客戶端的情境
往往都是PHP 當伺服器在接收客戶端的服務
這次反過來要去當客戶端
發送訊息給另一個伺服器
服務的伺服器為WebSocket Server
這個要搭建起來用PHP + Html5 根本無難度
但是要由PHP send message .... 一直卡住
翻尋許久,求助大大神
最後滑倒後踢到垃圾桶,踩到黃金等等
發現了
# "textalk/websocket
  # use WebSocket\Client;
  # composer  require textalk/websocket
開心的加載進去,剩下的就差不多了....
$client = new Client("ws://" . $this->input->server('HTTP_HOST') . ":".'port');
$client->send('47b6"}}');
$client->receive();
<途中插曲>
Port 忘記打開.... 所以一直連接不上

2018年8月17日 星期五

無聊閒逛,且做出來的一個簡單樣子

亞太股票

最近開始在自學一些前端工.... ><!
也準備著手去搞一些MIS的專業技能,雲服務感覺很重要 !!!

2018年8月9日 星期四

分享文章 利用 composer 實作 CodeIgniter 輸出報表

使用情境        之前要PHP 產生報表,都要先去下載 phpspreadsheet (前身 php execl ),把整個物件放進去專案內,假如用框架又要再調整一些load.... 剛好看到這篇  利用  composer  phpspreadsheet   library,只要修改 application/config/config.php 中的 $config['composer_autoload'] = 'vendor/autoload.php'; ,在想要實作的 use 需要的 class ,一個簡單報表就可以產生了~~ 備註 : Execl2007 需要 php-zip 擴展

https://arjunphp.com/generate-excel-phpspreadsheet-codeigniter-php/

2018年8月6日 星期一

分享一些不錯的PHP小函式

1. 檢查 參數是否存在 與 是否為空
function checkRequest($Request, $checkArray)
{
    foreach ($checkArray as $key => $value) {
        if (array_key_exists($value, $Request) == false && empty($Request[$value])) {
            return false;
        }
    }
    return true;
}
==================
時常要校驗請求的參數是否有缺少或者是不為空值,可以利用  array_key_exists  與  empty 快速篩選出結果,就可以不用寫一大堆 if else ......

2. 調用Curl Post 
    本小魯前幾天遇到一個 會被導向301的問題,所以在
//函数中加入下面这条语句 curl抓取页面时遇到重定向的解决方法
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

/**
* [my_curl 外部連線 http]
* @param [string] $url [description]
* @param [array] $post [description]
* @return [string] $result [description]
*/
function curlPost($url, $post)
{

// echo $url . '<hr>';
// echo "<pre>";
// print_r($post);
// echo "</pre>";
// echo "<hr>";
// ====================
//初始化curl
$ch = curl_init();
//永遠抓最新
$header[] = "Cache-Control: no-cache";
$header[] = "Pragma: no-cache";
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//等待時間
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
//抓取指定網頁
curl_setopt($ch, CURLOPT_URL, $url);
//post提交方式
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//设置header
curl_setopt($ch, CURLOPT_HEADER, 0);
//要求结果為字串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//函数中加入下面这条语句 curl抓取页面时遇到重定向的解决方法
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode != 200) {
$result = "";
}
curl_close($ch);
return $result;
}


拯救老電腦

 Sempron 3850 Socket AM1入門四核處理器 2014 8ram  作業系統 windows 10 1904 評論: 八年的核心,其他的故障電腦拆解零組件都是拼裝. 整體使用上,可以基本文書,瀏覽網站,聽音樂等等都可以接受的。 下次再來繼續搞更多..