Определение базы данных и таблиц.

<?xml version="1.0" encoding="UTF-8"?>
<model package="storefinder"
   baseClass="xPDOObject"
   platform="mysql"
   defaultEngine="MyISAM"
   tablePrefix="sf_"
   phpdoc-package="storefinder"
   phpdoc-subpackage="model"
   version="1.1">

Сначала мы скажем браузеру и парсеру, что это код XML со стандартным заголовком XML. Далее мы собираемся создать тег «модель» и добавить в него некоторые атрибуты. Тег «модель» представляет собой представление самой базы данных. Атрибуты:

  • package - имя пакета xPDO (обратите внимание, что это отличается от «транспортного пакета», термина Revolution). Вот как xPDO разделяет разные модели и управляет ими. Примечание: в XML имя пакета должно быть только строчным.
  • baseClass - это базовый класс, из которого будут расширены все ваши определения классов. Если вы не планируете создавать собственное расширение xPDOObject, лучше оставить его по умолчанию.
  • platform - драйвер PDO платформы базы данных, который вы используете. В настоящее время xPDO поддерживает драйверы PDO mysql, sqlite и sqlsrv.
  • defaultEngine - Механизм по умолчанию для таблиц базы данных, обычно MyISAM или InnoDB. xPDO рекомендует использовать MyISAM.
  • tablePrefix - необязательный параметр, который можно установить для переопределения префикса таблицы времени выполнения по умолчанию. Полезно для создания сторонних компонентов.
  • phpdoc-package & phpdoc-subpackage - это пользовательские атрибуты, которые мы будем использовать в наших файлах карт и классов. Они не являются стандартными атрибутами xPDO, но показывают, что вы можете поместить в качестве атрибутов все, что захотите.
  • version- версия схемы xPDO. По мере внесения изменений в формат схемы версия обновляется, чтобы различать, как модель обрабатывается во время выполнения.

<object class="sfStore" table="stores" extends="xPDOSimpleObject">


«Объект» - это наше представление таблицы, которая сгенерируется в класс xPDOObject, когда мы закончим. Здесь есть некоторые атрибуты, на которые следует обратить внимание:

  • class - это имя класса, который мы хотим создать из таблицы. Здесь мы будем использовать "sfStore". Обратите внимание, что вместо «Store» мы добавили префикс «sf», чтобы предотвратить конфликты с любыми другими пакетами, которые мы можем установить, которые также могут иметь таблицы Store.
  • table - Это должно указывать на фактическое имя таблицы базы данных, за исключением tablePrefix, который мы указали для пакета.
  • extends - это класс, который он расширяет. Обратите внимание, что вы можете создавать подклассы и расширенные классы прямо из XML. Расширенные классы наследуют поля своего родительского класса.

 

Здесь вы увидите, что эта таблица расширяет «xPDOSimpleObject», а не xPDOObject. Это означает, что таблица уже имеет поле «id», то есть первичный ключ с автоинкрементом.

Теперь, когда у нас есть определение таблицы для нашей таблицы магазинов, давайте добавим несколько определений полей:

<field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default="" index="index" />
<field key="address" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="city" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="state" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
<field key="zip" dbtype="varchar" precision="10" phptype="string" null="false" default="0" index="index" />
<field key="country" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
<field key="phone" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
<field key="fax" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
<field key="active" dbtype="int" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />

Как вы можете видеть здесь, каждый столбец в нашей таблице имеет тег определения поля. Оттуда у нас есть свойства атрибута для каждого поля. Большинство из них являются необязательными, в зависимости от типа базы данных столбца. Некоторые из этих свойств атрибута:

  • key  - имя ключа столбца.
  • dbtype - тип БД - например, varchar, int, text, tinyint и т. д.
  • precision - точность поля. Обычно это максимальное количество символов.
  • attributes - применяется только к некоторым типам БД; в целых числах вы можете установить «unsigned», чтобы убедиться, что значение всегда положительно.
  • phptype - соответствующий тип PHP типа поля БД.
  • null - Если поле может быть NULL или нет.
  • default - начальное значение поля по умолчанию не должно быть установлено.
  • index (не рекомендуется) - Необязательное поле, если оно установлено, добавит тип индекса в поле. Некоторые значения: «pk», «index» и «fk».
<index alias="name" name="name" primary="false" unique="false" type="BTREE">
<column key="name" length="" collation="A" null="false" />
</index>
<index alias="zip" name="zip" primary="false" unique="false" type="BTREE">
<column key="zip" length="" collation="A" null="false" />
</index>

Теперь давайте определим псевдоним для почтового столбца, называемого почтовым индексом, чтобы получить доступ к значению любым ключом:

<alias key="postalcode" field="zip" />

И наконец, мы закончим определение таблицы, закрыв тег объекта:

</object>

 


Конференция "Россия-Китай: история и культура"