自己寫的PHP框架
package: laiPHP
created_at: 2018/08/13 00:00:00
link: https://github.com/LaiJunBin/laiPHP
基本檔案目錄
|
|___<app>
| |___ <controller>
| |___ <middleware>
| |___ <views>
|
|___<autoload>
|
|___<database>
| |___ <migrations>
| |___ <seeders>
|
|___<public>
|
|___<samplefiles>
說明
app:存放Model,如app/Example.php
app/controller:存放控制器,處理邏輯
app/middleware:存放中介層
app/views:存放畫面,有提供模板引擎(.lai.php)
autoload:自動載入的類別
database/migrations: 存放 Migration
database/seeders: 存放 Seeder
public:對外公開的檔案,可以在外部直接輸入網址讀取
controller.php 控制器
route.php 處理路由,在autoload/web.php使用
function.php 常用方法寫在這個檔案中,整個程式都可以使用
samplefiles:存放cli相關的檔案(盡量不要動)
說明
function.php
Method | Description |
---|---|
dd(var1,var2...) | 印出變數並結束程式執行 |
dump(var1,var2...) | 印出變數但不結束程式執行 |
keys(array) | 回傳陣列的keys |
values(array) | 回傳陣列的values |
containsKey(array,key) | 判斷陣列中是否存在索引為key |
contains(array,data) | 判斷陣列中是否存在資料為data |
array_fetch(array, keys) | 為陣列中所有元素抓取keys的元素,階層以.分隔 |
array_only(array, keys) | 為陣列中第一個元素抓取keys的元素,階層以.分隔 |
array_get(array, key, default) | 以key取得陣列中的元素,階層以.分隔 |
array_forget(array, key, exception=false) | 以key刪除陣列中的元素,階層以.分隔,若exception為true,找不到name將會報錯 |
array_copy(a, b, key) | 複製b陣列中key的資料至a陣列 |
array_map_recursive(array, func) | 遞迴執行array_map |
clearEmpty(array) | 清除陣列中所有空的元素 |
Response(res=null) | 產生Response()物件 |
get_mime_type(filename) | 取得檔案的mime type |
old(key, default) | 取得舊的輸入資料 |
method_field(method) | 產生表單欺騙隱藏欄位 |
str_replace_first(search, replace, subject) | 字串取代(只取代第一筆) |
clean_url(url) | 將url多餘的/清除 |
public_path(path) | 取得public path |
assets_path(path) | 取得assets path |
route(name, params=[]) | 取得特定名稱路由的url,可帶入參數 |
include_model(model) | 引入 Model |
include_models(models=[]) | 引入多個Model |
array_to_model($array, $model) | 將 array 轉換為 model, 相當於 new $model($array) |
array_to_models($arrays, $model) | 將二維陣列中每個array轉換為model,並傳回 Collection 集合 |
session() | 取得 session 物件 |
request.php
Request 物件
Method | Description |
---|---|
status | 取得Http Response Code |
method | 取得 方法 GET POST .... |
get(array,data) | 取得GET資料 |
post(array) | 取得POST資料 |
file(name) | 取得FILE |
json(array,key) | 取得JSON資料 |
all(array) | 依順序回傳第一個非空的資料,順序為JSON,POST,GET |
headers(key=null) | 回傳對應的header,如果key=null將回傳所有header |
{route params} | 回傳對應的路由參數,例如 $request->name |
response.php
Response 物件
Method | Description |
---|---|
json(json_data=[]) | json response |
code(code=200) | 設定http_response_code |
redirect(url) | 轉址 |
redirectRoute(name, params=[]) | 轉址到特定route |
back() | 回到上一頁 |
view(file,params=[]) | 顯示views中的文件,也可以傳入參數 |
log(status_code=200) | 在主控台打印Response Log |
withInput() | 可搭配 old() 使用,將使用者輸入的值放回input |
withErrors(errors=[]) | 可在模板引擎中取得$errors變數 |
collection.php
Collection 物件
Method | Description |
---|---|
clear() | 清除資料 |
set(data) | 設定data |
assign(items) | 覆蓋items |
get(index) | 取得第index筆資料 |
includes(item) | 是否包含item |
first() | 取得第一筆資料 |
last() | 取得最後一筆資料 |
count() | 取得集合中的資料數 |
map(func) | map處理 |
filter(func) | filter處理 |
find(func) | 取得第一筆符合條件的資料 |
forEach(func) | foreach處理 |
fetch(keys) | 同 array_fetch |
only(keys) | 同 array_only |
to_array() | 取得陣列 |
recursive(func) | 遞迴集合 |
sum() | 加總 |
flat() | 攤平一層 |
join(glup) | join資料 |
session.php
Session 物件
Method | Description |
---|---|
has(name) | session是否存在,name階層以.分隔 |
get(name, default) | 取得session值,name階層以.分隔 |
put(name, value) | 設定session |
forget(name, exception=false) | 刪除session,name階層以.分隔,若exception為true,找不到name將會報錯 |
auth.php
Auth 物件
Method | Description |
---|---|
login(user) | 登入 |
logout() | 登出 |
check() | 檢查是否登入 |
user() | 取得登入的使用者 |
get_user_class() | 取得user使用的class |
url.php
URL 物件
Method | Description |
---|---|
current() | 取得當前URL |
previous() | 取得前一個URL |
命令使用
Command | Description |
---|---|
php lai serv | 啟動測試伺服器 |
php lai make:controller | 產生控制器(controller) |
php lai make:middleware | 產生中介層(middleware) |
php lai make:migration | 產生migration |
php lai make:model | 產生模型(model) |
php lai make:seeder | 產生seeder |
php lai migrate | 建立你所定義的table |
php lai migrate:fresh | 刪除所有定義的table |
php lai migrate:refresh | 相當於 migrate:fresh + migrate |
php lai db:seed | 執行 seed |
php lai route:list | 顯示當前所有路由 |
php lai help | 幫助訊息 |
DB 使用
Example為Model Class
DB為基底類別
Method | Description |
---|---|
DB::execute(SQL) | 執行SQL語法 |
Example::count() | 取得Example表的資料筆數 |
Example::create([key=>value,...]) | 對Example表新增資料 |
Example::update([key=>value,...],[condition=>value,...]) | 對Example表修改資料 |
Example::delete([condition=>value,...]) | 對Example表刪除資料 |
Example::get(index) | 取得Example表的第i筆資料 |
Example::get([orderby=>value,...]) | 取得Example表所有資料 |
Example::get(index, [orderby=>value,...]) | 取得Example表排序後的第i筆資料 |
Example::find([condition=>value,...]) | 對Example表尋找資料(一筆) |
Example::findall([condition=>value,...]) | 對Example表尋找資料(全部) |
Example::contains([condition=>value,...]) | 對Example表尋找資料(回傳是否存在) |
$example->save() | 將$example存入資料庫 |
$example->delete() | 將$example從資料庫刪除 |
$example->update([key => value, ...]) | 將$example更新 |
$example->isInstance() | 檢查$example是否為資料庫中的實體 |
關聯模型
Method | Description |
---|---|
$this->hasOne(模型, 外鍵, 主鍵); | 一對一 |
$this->hasMany(模型, 外鍵, 主鍵); | 一對多 |
$this->through(模型, 外鍵, 主鍵)->hasMany(模型, 外鍵, 主鍵); | 多對多 |
參數說明:
- 模型 => app資料夾底下的Model,Ex: Example
- 外鍵 => 若不輸入則預設為 模型_id, Ex: example_id,
若為多對多關聯則預設值為呼叫的模型class_id
- 主鍵 => 若不輸入則預設為 id
Template Engine
此區文件需到 GitHub 上觀看
env.php
Const | Description |
---|---|
HOST | 伺服器位置,如localhost |
PORT | Port |
DATA_BASE | 資料庫名稱 |
USER_NAME | 資料庫帳號 |
PASS_WORD | 資料庫密碼 |