這是我的 ALX 軟體工程專案組合專案。這個專案是一個簡單的 ORM,可讓您使用 PHP 與資料庫進行互動。該項目仍處於早期階段,不建議在生產環境中使用。該專案是開源的,歡迎貢獻。
Sebastian Muchui
MIT
0.1.0
您需要在電腦上安裝 PHP 才能使用此軟體套件。如果您沒有安裝PHP,可以從PHP官方網站下載。
其次,請確保您的機器上安裝了 Composer。如果沒有,您可以按照 Composer 官方網站中提供的說明進行安裝。完成此操作後,您需要在專案根目錄中建立composer.json檔案並新增以下程式碼:
{
"minimum-stability" : " dev "
}
之後,您可以透過在終端機中執行以下命令來安裝該軟體包:
composer require astianmuchui/ PixelSequel
ORM 包含 2 個主要部分,單獨建置以實現靈活性和易用性。兩部分是:
該模型是 ORM 的一部分,可讓您與資料庫表進行互動。它允許您執行插入、更新、查詢和刪除等操作。要使用模型,您需要建立模型類別的新實例。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel ' ,
username: ' root ' ,
password: '' ,
dbhost: ' localhost '
);
預設情況下,設定以下值:
username
: 'root'
password
: ''
dbhost
: 'localhost'
在開發環境中,您可以將資料庫名稱作為唯一參數傳遞給模型類別。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
要插入數據,只需呼叫Insert
靜態方法即可。請注意,模型實例不需要分配給變量,因為方法將從實例化物件推斷連接。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Insert (
table: ' users ' ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
資料數組的鍵必須是表中有效的列名。對應的值是要插入到表中的值。在即將推出的版本中,ORM 將能夠自動從表中推斷列名並在插入之前驗證資料。
這裡你基本上只需要呼叫All
方法。此方法可以採用各種參數來過濾要檢索的資料。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
$ users = Model:: All (
table: ' users ' ,
where: [
' name ' => ' John Doe '
]
where_like: [
' email ' => ' gmail '
]
order_by: 'id',
order: ' DESC ' ,
limit: 10
);
table: The table to read from
where: An associative array of the column names and their values to filter the data using the where clause
where_like: An associative array of the column names and their values to perform searches
order_by: The column to order the data by
order: The order to use. Either 'ASC' or 'DESC'
limit: The number of records to retrieve
json: A boolean value to determine if the data should be returned as a json string or an array
此方法傳回檢索到的資料的物件。然後您可以循環訪問該物件以獲取資料。如果將限制設為 1,則需要選擇物件的第 0 個索引才能取得資料。通常,開發此功能的關鍵目標之一是使單一函數可以執行所有選擇功能。還有其他 select 方法,但請忽略它們,因為它們寫得不好,將在將來的版本中刪除。
update方法基本上是Insert方法的複製品,但是必須傳入標識行的參數類型及其值
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Update (
table: ' users ' ,
param_t: ' id '
param_n: 1 ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
param_t
是參數類型,通常是列名。 param_n
是參數類型的值。
Delete
方法用於從資料庫中刪除資料。它採用表名稱以及參數類型和值來識別要刪除的行。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Delete (
table: ' users ' ,
param_t: ' id '
param_n: 1
);
模式是 ORM 的一部分,可讓您與資料庫表進行互動。它允許您執行建立、更新和刪除表等操作。要使用模式,您需要建立模型類別的實例並將資料庫連接傳遞給模式類別。請注意,模型實例不需要分配給變數和模式
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
可以透過呼叫模型類別上的Connected
方法來檢查連線。該方法傳回一個布林值。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
if (Model:: Connected ())
{
new Schema (
Model:: Connection ()
);
echo ' Connected ' ;
}
else
{
echo ' Not Connected ' ;
}
建立連線後,您可以透過呼叫架構類別的Create
方法來建立表格。此方法接受表名以及列名及其資料類型的關聯數組。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Create (
table: ' pxtest ' ,
structure: [
" id " => [
" type " => " int " ,
" length " => 11 ,
" primary_key " => true
],
" username " => [
" type " => " varchar " ,
" length " => 11 ,
" null " => false
]
]
);
結構體數組的鍵必須是表中有效的列名。對應的值是列資料類型及其屬性的關聯數組。屬性是:
type: The data type of the column
length: The length of the column
primary_key: A boolean value to determine if the column is a primary key
null: A boolean value to determine if the column can be null
auto_increment: A boolean value to determine if the column is auto increment
Alter
方法用於更改表。它接受三個參數:表名、列名和要設定的內容
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Alter (
table: ' pxtest ' ,
column: ' username '
set: " int(255) NOT NULL "
);
Drop
方法用於刪除表。它接受表名稱作為參數。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Drop (
table: ' pxtest '
);
若要中斷與資料庫的連接,可以呼叫模型類別的Disconnect
方法。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Model:: Disconnect ();
歡迎貢獻。您可以透過分叉儲存庫並發出拉取請求來做出貢獻。如果您發現任何錯誤或有任何功能要求,也可以提出問題。