Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

在 Laravel unit test 手動建立 HTTP request

Posted on 2019 年 6 月 27 日2021 年 3 月 12 日 By 日落 在〈在 Laravel unit test 手動建立 HTTP request〉中尚無留言

現在有個 controller 收到 HTTP POST data 以後才會動作,且這個 controller 為 AJAX controller,沒有 view 沒辦法用 Selenium 測試:

class TargetController extends Controller
{
    public function doSomething(Request $req)
    {
        // do something ....
    }
}

要測試的話,其實可以透過一些工具手動測試,像是 PostMan 等類似的工具。但這種測試會遇到一些問題:Middle 有檢查使用者身份、需要拿到 access token 才能進 controller 等等。這樣會讓測試多了不少不確定因素 (變因),導致測試結果不準確。

要進行測試較好的方法,就是建立一個 HTTP request 來模擬實際情況:

$req = new lluminateHttpRequest();

$ctrl = new TargetController()
$result = $ctrl->doSomething($req);

不過可惜的是 Request 這個類別,設計原始的用意是從 $_GET、$_POST、$_FILE 等全域變數整理成物件方便 access,所以若要在 request 中加入參數,目前只能透過 replace() 來增加。例如需要新增 key/value pair,必須這樣撰寫:

$request->replace([
    'key' => 'value',
]);

至於模擬檔案上傳 …. 我還在找方法,確定了以後再來寫筆記。

Ref:

  • IlluminateHttpRequest | Laravel API
  • Unit Testing Your Laravel Controllers – Matthew Daly's Blog
Tags:Laravel, PHP

PHP 5.6 new release

Posted on 2019 年 1 月 16 日2021 年 3 月 12 日 By 日落 在〈PHP 5.6 new release〉中尚無留言

官方原本要在 2018/12 中止對 PHP 5.x 的支援,但 2019/01 還是發布了 5.6 的更新,自動內容大致如下:

  • GD library 的 security fix
  • mbstring 的 bug fix
  • Phar 的 security fix
  • xmlrpc 的 security fix
還沒更新上 PHP 7.x 的人記得更新。
Tags:PHP

近期撰寫程式碼的量

Posted on 2018 年 10 月 30 日2021 年 3 月 12 日 By 日落 在〈近期撰寫程式碼的量〉中尚無留言

以前大多用 3rd-party library 來拼拼湊湊出自己要使用的功能,近一年狀況比較特殊,幾乎所有東西都要自幹:

$ cd /project/root/src
$ du -sh
148K    .

一年的 code 就 150 KB,算是自開始寫程式以來的個人記錄了吧。

希望這 150 KB 的程式是好的程式,而不是垃圾。

Tags:PHP, 生活雜記

PHP 5.6 將在 2018 年底中止維護

Posted on 2018 年 10 月 17 日2021 年 3 月 12 日 By 日落 在〈PHP 5.6 將在 2018 年底中止維護〉中尚無留言

目前 PHP 5 最後一個承載維護的版本:5.6,將於今年年底中止維護。也就是不會再有新功能,且就算有錯誤、安全漏洞也不會再繼續修補。

所以建議大家盡快升級手邊的 PHP 專案至 PHP 7。

圖片來源:http://php.net/supported-versions.php

個人的經驗,可以跳過 7.0 直接上 7.1,畢竟 7.1 主要是新增一些 7.0 還不支援的功能,沒有他太大的異動。7.2 主要是對效能調整,和新增一些語法,要直接跳 7.2 也不會花太多時間改程式。

Tags:PHP, 資訊安全

PHP server connector 一些 un-documented behaviour

Posted on 2018 年 10 月 15 日2021 年 3 月 12 日 By 日落 在〈PHP server connector 一些 un-documented behaviour〉中尚無留言

今天是測試 Memcache::connect() 踩到的問題。

先來看看文件上的說明:
Returns TRUE on success or FALSE on failure.
所以我的程式就這樣寫:

$c = new Memcache();
$stat = $c->connect('localhost');

if (false === $stat) {
    echo 'connection failed';
} else {
    echo 'connected to cache server';
}

測試時把 Memcached shutdown 來看看是否會偵測到連線失敗。執行時卻噴了一堆錯誤訊息:

Warning: Memcache::connect(): Can't connect to localhost:11211, Connection refused (111) in /home/u/he5702/tmp/asd.php on line 4

Call Stack:
    0.0001     355600   1. {main}() /home/u/he5702/tmp/asd.php:0
    0.0001     355640   2. Memcache->connect() /home/u/he5702/tmp/asd.php:4

connection failed

文件上面並沒有提到 library 除了回傳 false 以外,還會噴一堆錯誤訊息。萬一這隻是 JSON API 就一定會導致 client parse error。

所以應變方法用「@」來隱藏錯誤訊息:

$stat = @$c->connect('localhost');

寫程式真的很怕遇到 undefine behavior,如果文件上都寫清楚的話,在 dev / staging 上都可以事先檢查、防範。但連文件都沒有寫,就只能等個被廣大的客戶客訴到死 ….。

Tags:PHP

文章分頁

上一頁 1 ... 10 11 12 ... 26 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.