php – phpStorm 設定 debug

以 xdebug 為例,如果是在 windows ,例如使用 XAMPP 套件,可以參考官方網站這麼設定。

修改 php.ini 啟動 Xdebug

前往 Settings (Ctrl + Alt + S) > Languages & Frameworks > PHP 打開 php.ini

如果有以下,請把 Zend Debugger 和 Zend Optimizer 隱藏,也就是在前方加分號

我們要啟動 Xdebug 所以在 php.ini 底部添加 Xdebug 章節,例如

儲存並關閉設定,我們可以查看 xdebug 是否啟動

寫入一支 php 查看是否已經出現 xdebug 安裝的資訊

在 phpStorm 設定

參考官方文章,Settings (Ctrl + Alt + S) > Languages & Frameworks > PHP

如果 Xdebug 有正確安裝的話會看到以下版本正確的顯示。如果沒有正確安裝,會顯示 Debugger: Not installed

接著設定 port ,也就是我們在 php.ini 寫入的 xdebug.remote_port=9911

儲存設定後關閉。接著我們使用 Chrome 來瀏覽 PHP 專案,所以我們要安裝瀏覽器輔助套件 xdebug-helper 。其他瀏覽器可參考官網的列表

安裝完成以後,我們寫段 Script

接著設定斷點,準備觀察

點選右上角視窗電話符號,或是選單 Run > Start Listening for PHP Debug Connections 準備監聽

打開 Chrome 啟動套件 Debug

接著運行網頁,phpStorm 就會自動出現除錯模式,點擊不同按紐,可以直接查看變數

例如

不斷點擊按紐,可以看到斷點呈現的變數資訊,到結束時,若 PHP 有輸出指令,可以在 output 檢視結果。

Ububtu 安裝 Xdebug

安裝好後會看到這樣的訊息,要你前往添加 php.ini 的參數 zend_extension

當然也可以查詢 extension 安裝在哪個目錄

接著依照指示修改 php.ini,記得兩處都要

如果已經有 zend_extension 參數,記得註解掉,我們改用以下

HTML – 使用正規表示式驗證

使用標籤 input 的時候,配合屬性 pattern 可以透過正規表示法來驗證,以下例子是限制密碼最少輸入8-12位英文與數字

See the Pen PoYmNQB by 檀熤斮 (@sbgjbjaa) on CodePen.

php – testing – 在 Laravel 專案透過 phpStorm 設定 phpunit

使用 phpStorm 版本 2019.1.3 進行教學,首先設定,我們在快捷鍵按下 Ctrl + Shift + A 輸入 Edit Configurations

點選右下角 FIX
兩個都指定版本例如 PHP7.3,之後點選 OK
發現這裡本來的錯誤消失了,之後再按 OK

接著我們下快捷鍵 Ctrl + Shift + A 輸入 Settings,進入 Languages & Frameworks > PHP > Test Frameworks

指定測試項目
我們直接使用 Composer 的 PHPUnit ,並指定 phpunit.xml 設定檔位置

接下來打開測試檔案,我們可以直接在 methods 左側的綠色箭頭,點擊後會自動運行測試

如果運行成功會出現綠色打勾

Laravel – Unit Test 單元測試教學

Laravel 整合了 phpunit 製作單元/功能測試,我們以空專案 blog 來進行範例。

資料庫設定

寫測試的時候,建立一份專門提供給測試的資料庫,避免與實際運作的開發環境共用。根目錄底下,複製一份 .env 為 .env.testing 並修改內容,運行測試的時候透過 artisan 指令添加參數 –env=testing 將會覆蓋 .env 的值

修正 DB 支援的問題

若出現 Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes 那麼請修改 app/Providers/AppServiceProvider.php

建立 Migration

一開始先建立 DB Schema

記住,我們要運行在測試資料庫

建立資料表 Posts

建立測試資料工廠

這裡的工廠 PostFactory 負責定義我們的假資料工廠,只要返回我們需要的欄位即可

建立單元測試

我們在單元測試中會做這幾件事情

  • 建立兩筆資料
  • 驗證是否符合預期
  • 刪除測試資料

可以建立多個方法來進行測試,命名的規則例如

  • testExample() 在測試顯示時的名稱叫做 Example
  • testUserRegister() 在測試顯示時的名稱叫做 User register

我們嘗試編寫

接著運行測試,但很重要的記得清除緩存 config:clear,讓測試環境能抓取 .env.testing。

功能測試

上面做的是單元測試,那假設我們要測試 API 是否符合預期,我們則要使用功能測試。

新增一個 Controller

現在新增路由

接著下指令產生功能測試

接著嘗試訪問 API,並斷言回傳的 JSON 符合我們的結構

如果要在 Request 加入 Header 可以這麼寫

若要為 Response 除錯,可以選用添加

如果使用 phpStorm 進行測試,我們可以透過設定進行測試,請參考這篇

php – laravel – 將已存在的資料庫匯出 migration 與 seed

匯出 Migration

首先安裝這個套件,先匯出 DB Schema 到 migration

Laravel 5.5 以後的版本,下載好後就不需安裝任何的 Providers。使用方法如:

不過資料表欄位的型態,若是 Enum 的時候,目前版本 v2.0.2 會出錯,請修改 src/Xethron/MigrationsGenerator/Generators/FieldGenerator.php

主要是 MySQL 8 返回的欄位名稱是大寫, MariaDB 返回的是小寫,需要稍作修改就可以了。我提出了合併請求,不過我看目前開發者合併停滯在 2017 年,因為這個功能僅單次使用,我也就不再 fork 了,手改一下就好。

匯出 Seed

接著產出 seed,就下載這個套件

一樣 Laravel 5.4 以後不需要做任何安裝設定。比較麻煩的是要個別指定匯出的資料表名稱,使用方法如