php – 找出自行定義的 Function 或 Class 在哪個文件位置

維護專案的時候,尤其是非框架的寫法,常常看到前人的程式會不知道 Class / Function 到底定義在哪個文件,雖然用 IDE 可以很容易找出來,但如果不靠 IDE 追蹤的話,有什麼方法能得知定義在哪呢?其實可以透過 ReflectionFunction 與 ReflectionClass 。

ReflectionFunction

可以讀取指定方法的相關資訊

ReflectionClass

能讀取指定類別的相關資訊

Laravel – 關於 Carbon 日期處理的二月問題

目前使用指定屬性或 set 方法的方式,在 Carbon v2.24 會出現指定 2 月但顯示 3 月的錯誤。

後來在較新的官方文件看到,還是建議使用預設的用法

Laravel – MySQL – 繞過資料庫外鍵的條件約束,強制刪除

MySQL 下指令 SET FOREIGN_KEY_CHECKS=0,可以將被關聯的來源強制刪除,有時候我們僅是要做測試的時候,會非常好用,不會被卡死。

在 Laravel 可以透過這樣的方式,來刪除紀錄或清空資料表

php – Laravel 支援跨網域的方式

通常我們在 php 檔案最前方加入

但在 Laravel 當然也可以直接寫在 web.php / api.php 最前方,但我通常會建立一份 middleware 結構處理。

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 以後不需要做任何安裝設定。比較麻煩的是要個別指定匯出的資料表名稱,使用方法如