이것은 ALX 소프트웨어 엔지니어링 프로그램에 대한 나의 포트폴리오 프로젝트입니다. 이 프로젝트는 PHP를 사용하여 데이터베이스와 상호 작용할 수 있는 간단한 ORM입니다. 이 프로젝트는 아직 초기 단계이므로 프로덕션 환경에서는 사용하지 않는 것이 좋습니다. 이 프로젝트는 오픈 소스이며 기여를 환영합니다.
Sebastian Muchui
MIT
0.1.0
이 패키지를 사용하려면 컴퓨터에 PHP가 설치되어 있어야 합니다. PHP가 설치되어 있지 않은 경우 공식 PHP 웹사이트에서 다운로드할 수 있습니다.
둘째, 컴퓨터에 작곡가가 설치되어 있는지 확인하십시오. 그렇지 않은 경우 공식 작곡가 웹사이트에 제공된 지침에 따라 설치할 수 있습니다. 이 작업이 완료되면 프로젝트 루트 디렉터리에 작곡가.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로 설정하면 데이터를 가져오려면 개체의 0번째 인덱스를 선택해야 합니다. 일반적으로 이를 개발하는 동안 주요 목표 중 하나는 단일 기능이 모든 선택 기능을 수행하도록 만드는 것이었습니다. 다른 선택 방법이 있지만 잘 작성되지 않았으므로 무시하고 향후 버전에서 제거됩니다.
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
메서드는 테이블을 변경하는 데 사용됩니다. 테이블 이름, 열 이름, 설정할 항목의 세 가지 매개변수를 사용합니다.
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 ();
기여를 환영합니다. 저장소를 포크하고 끌어오기 요청을 하여 기여할 수 있습니다. 버그를 발견하거나 기능 요청이 있는 경우 문제를 열 수도 있습니다.