これは、ALX ソフトウェア エンジニアリング プログラムの私のポートフォリオ プロジェクトです。このプロジェクトは、PHP を使用してデータベースと対話できるようにする単純な ORM です。このプロジェクトはまだ初期段階にあるため、運用環境での使用はお勧めできません。このプロジェクトはオープンソースであり、貢献を歓迎します。
Sebastian Muchui
MIT
0.1.0
このパッケージを使用するには、マシンに PHP がインストールされている必要があります。 PHP がインストールされていない場合は、PHP の公式 Web サイトからダウンロードできます。
次に、マシンに Composer がインストールされていることを確認します。そうでない場合は、Composer の公式 Web サイトに記載されている手順に従ってインストールできます。これが完了したら、プロジェクトのルート ディレクトリにcomposer.json ファイルを作成し、次のコードを追加する必要があります。
{
"minimum-stability" : " dev "
}
その後、ターミナルで次のコマンドを実行してパッケージをインストールできます。
composer require astianmuchui/ PixelSequel
ORM には 2 つの主要な部分があり、柔軟性と使いやすさを考慮して個別に構築されています。 2 つの部分は次のとおりです。
モデルは、データベース テーブルとの対話を可能にする ORM の一部です。これにより、挿入、更新、クエリ、削除などの操作を実行できます。モデルを使用するには、モデル クラスの新しいインスタンスを作成する必要があります。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel ' ,
username: ' root ' ,
password: '' ,
dbhost: ' localhost '
);
デフォルトでは、次の値が設定されています。
username
: 'root'
password
: ''
dbhost
: 'localhost'
開発環境では、dbname を唯一のパラメータとしてモデル クラスに渡すだけで済みます。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
データを挿入するには、 Insert
静的メソッドを呼び出すだけです。メソッドはインスタンス化されたオブジェクトから接続を推測するため、Model インスタンスを変数に割り当てる必要はないことに注意してください。
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 番目のインデックスを選択する必要があります。通常、これを開発する際の重要な目標の 1 つは、単一の関数ですべての選択機能を実行できるようにすることでした。他にも選択メソッドがありますが、それらは適切に記述されておらず、将来のバージョンでは削除されるため、無視してください。
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 の一部です。テーブルの作成、更新、削除などの操作を実行できます。スキーマを使用するには、モデル クラスのインスタンスを作成し、データベース接続をスキーマ クラスに渡す必要があります。 Model インスタンスを変数やスキーマに割り当てる必要はないことに注意してください。
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
メソッドはテーブルを変更するために使用されます。テーブル名、列名、設定内容の 3 つのパラメータを受け取ります。
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 ();
貢献は大歓迎です。リポジトリをフォークしてプル リクエストを作成することで貢献できます。バグを見つけた場合や機能リクエストがある場合は、問題をオープンすることもできます。