นี่คือผลงานโครงการของฉันสำหรับโปรแกรม ALX Software Engineering โปรเจ็กต์นี้เป็น ORM ธรรมดาที่ให้คุณโต้ตอบกับฐานข้อมูลโดยใช้ PHP โปรเจ็กต์ยังอยู่ในช่วงเริ่มต้นและไม่แนะนำให้ใช้ในสภาพแวดล้อมการใช้งานจริง โครงการนี้เป็นโอเพ่นซอร์สและยินดีให้การสนับสนุน
Sebastian Muchui
MIT
0.1.0
คุณต้องติดตั้ง PHP ในเครื่องของคุณเพื่อใช้แพ็คเกจนี้ หากคุณไม่ได้ติดตั้ง PHP คุณสามารถดาวน์โหลดได้จากเว็บไซต์ PHP อย่างเป็นทางการ
ประการที่สอง ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งผู้แต่งไว้ในเครื่องของคุณแล้ว ถ้าไม่เช่นนั้น คุณสามารถติดตั้งได้โดยทำตามคำแนะนำที่ให้ไว้ในเว็บไซต์ผู้แต่งอย่างเป็นทางการ เมื่อเสร็จแล้ว คุณจะต้องสร้างไฟล์ 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'
ในสภาพแวดล้อมการพัฒนา คุณสามารถส่ง 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 คุณจะต้องเลือกดัชนีศูนย์ของออบเจ็กต์เพื่อรับข้อมูล โดยทั่วไปหนึ่งในเป้าหมายสำคัญในขณะที่พัฒนาสิ่งนี้คือการทำให้ฟังก์ชันเดียวทำหน้าที่เลือกฟังก์ชันทั้งหมด มีวิธีเลือกอื่นๆ แต่ไม่ต้องสนใจเนื่องจากเขียนได้ไม่ดีนักและจะถูกลบออกในเวอร์ชันต่อๆ ไป
โดยพื้นฐานแล้ววิธีการอัปเดตนั้นเป็นแบบจำลองของวิธีการแทรก อย่างไรก็ตาม จะต้องส่งผ่านประเภทพารามิเตอร์เพื่อระบุแถวและค่าของมัน
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
ใช้ในการแก้ไขตาราง ใช้พารามิเตอร์สามตัว ได้แก่ ชื่อตาราง ชื่อคอลัมน์ และสิ่งที่ต้องตั้งค่า
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 ();
ยินดีบริจาค คุณสามารถมีส่วนร่วมได้โดยการฟอร์กพื้นที่เก็บข้อมูลและทำการร้องขอการดึง คุณยังสามารถเปิดปัญหาได้หากคุณพบข้อบกพร่องหรือมีคำขอคุณสมบัติใด ๆ