PHP: Описание класса для быстрой работы с базой данных fsDBTable: Часть 1

Класс fsDBTable (по сути это совокупность классов) был разработан мной для системы управления OnePageCMS с целью облегчения работы с базой данных. Данный класс можно найти в сборке указанной CMS в папке kernel файл fsBase.

Основным преимуществом данного класса является вариативность его использования, а так же автоматизированное создание внутренней структуры таблицы, что избавляет Вас от рутинной работы по описанию полей базы данных в PHP.

Перед тем как описать сам класс, необходимо оговорить несколько вспомогательных классов fsStruct, fsDBsettings, fsDBconnection, Validator.

fsDBconnection

Данный класс служит для отправки запросов в базе данных. В явном виде данный класс нигде не используется, поэтому описывать его особого смысла нет. В конструкторе принимает массив настроек для соединения с базой данных. По сути является оболочкой для mysqli_connect.

fsStruct

Базовый класс, реализующий структуру для хранения данных. Общая структура класса:

class fsStruct {
  protected $Fields = Array(); //Внутренний массив данных
  protected $AllowNull; //Флаг динамического создания полей
  public function GetStruct();
  public function Clear($Filter = Array());
  public function ToArray();
  public function Exists($field, $check_numeric = false);
  public function Delete($field = false);
  public function __construct($Fields = null, $AllowNull = false);
  public function __destruct();
  public function __get($field);
  public function __set($field, $value);
}

__construct:
$Fields — Ассоциативный массив начальный данных в виде
$Arr[‘имя_поля’] = Array(‘Value’ => ‘значение’, [‘ReadOnly’ => [true|false]]);
$AllowNull — bool. Разрешает или запрещает создание новых полей в классе;
Например:

$Arr = Array();
$Arr['name'] = Array('Value' => 'Иван', 'ReadOnly' => true);
$Arr['last'] = Array('Value' => 'Иванов', 'ReadOnly' => true);
$Arr['age'] = Array('Value' => 18);
$struct_1 = new fsStruct($Arr);
$struct_2 = new fsStruct($Arr, true);

echo $struct_1->name.' '.$struct_1->last.' '.$struct_1->age;
echo $struct_1->middle; //Пустая строка (поля нет)
echo $struct_2->middle; //Пустая строка (поля нет)
$struct_1->name = 'Петя'; //Ошибка, поле только для чтения
$struct_1->age = 20; //ОК
$struct_1->middle = 'Иванов'; //Ошибка, создание новых полей запрещено
$struct_2->middle = 'Иванов'; //ОК

Примечание: Дальнейшие примеры будут использовать данные две структуры!

$Array = function GetStruct()
Функция возвращает имена хранящихся полей.

$Arr = $struct_2->GetStruct();
//$Arr = Array('name', 'last', 'age', 'middle');

void = function Clear($Filter = Array())
Функция очищает данные полей, указанных в $Filter при условии что они не доступны только для чтения.

$struct_1->Clear(Array('age', 'last'));
echo $struct_1->age; //Пустая строка
echo $struct_1->last; //Иванов


$Array = function ToArray()
Функция возвращает ассоциативный массив в виде $A[‘ИмяПоля’] = ‘Значение’;

$Arr = $struct_1->ToArray();
//$Arr = Array('name' => 'Иван', 'last' => 'Иванов', 'age' => 20);

$Bool = function Exists($field, $check_numeric = false)
Функция проверки наличия поля с именем $field. $check_numeric — дополнительная проверка, является ли значение данного поля числом.

$struct_1->Exists('name'); //true
$struct_1->Exists('name', true); //false
$struct_1->Exists('age'); //true
$struct_1->Exists('age', true); //true
$struct_1->Exists('middle'); //false
$struct_2->Exists('middle'); //true

void = function Delete($field = false)
Удаляет поле с именем $field. Если $filed не указано, то удаляются все поля.

$struct_2->Exists('middle'); //true
$struct_2->Delete('middle');
$struct_2->Exists('middle'); //false


fsDBsettings extends fsStruct

Данный класс является частным случаем класса fsStruct с реализацией четырех полей «server», «user», «password», «base». Данные параметры принимаются в конструкторе. Так же данные о соединении, могут быть автоматически переданы в данный класс, путем реализации статического класса DBsettings.

Например:

$Arr = Array();
$Arr["server"] = Array("Value" => "localhost");
$Arr["user"] = Array("Value" => "root");
$Arr["password"] = Array("Value" => "pwd");
$Arr["base"] = Array("Value" => "base_1");
$Settings_1 = fsDBsettings($Arr);

class DBsettings {
 public static $server     = "localhost";
 public static $user       = "root";
 public static $password   = "pwd";
 public static $base       = "base_1";
}

$Settings_2 = fsDBsettings();

//В данном случае $Settings_1 и $Settings_2 абсолютно одинаковы.

Validator

Статический класс. Является вспомогательным для класса fsDBTable. Реализует методы проверки типов данных полей mysql таблиц базы данных.

Запись опубликована в рубрике PHP с метками , , , , , , , , , , , . Добавьте в закладки постоянную ссылку.