Это мой проект-портфолио для программы ALX Software Engineering. Проект представляет собой простую ORM, позволяющую взаимодействовать с базой данных с помощью PHP. Проект все еще находится на ранней стадии и не рекомендуется для использования в производственных средах. Проект с открытым исходным кодом и вклад приветствуется.
Sebastian Muchui
MIT
0.1.0
Чтобы использовать этот пакет, на вашем компьютере должен быть установлен PHP. Если у вас не установлен PHP, вы можете скачать его с официального сайта PHP.
Во-вторых, убедитесь, что на вашем компьютере установлен композитор. Если нет, вы можете установить его, следуя инструкциям на официальном сайте композитора. Как только это будет сделано, вам необходимо создать файл композитора.json в корневом каталоге вашего проекта и добавить следующий код:
{
"minimum-stability" : " dev "
}
После этого вы можете установить пакет, выполнив в терминале следующую команду:
composer require astianmuchui/ PixelSequel
ORM состоит из двух основных частей, построенных отдельно для обеспечения гибкости и простоты использования. Две части:
Модель — это часть 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, вам нужно будет выбрать нулевой индекс объекта для получения данных. Обычно одной из ключевых целей при разработке было сделать так, чтобы одна функция выполняла все функции выбора. Существуют и другие методы выбора, но игнорируйте их, поскольку они плохо написаны и будут удалены в будущих версиях.
Метод обновления по сути является копией метода 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 ();
Взносы приветствуются. Вы можете внести свой вклад, разветвив репозиторий и сделав запрос на включение. Вы также можете открыть проблему, если обнаружите какие-либо ошибки или у вас есть пожелания по функциям.