Хорошо, частично вдохновленный проверкой модели CakePHP. Я создал проект, в котором используется отдельный файл схемы базы данных. Мне не понравилось, что в CakePHP файл модели и db-схема объединены в одном файле php. Мне нравится иметь их отдельно.
Все мои обновления, вставки и удаления в sql сначала передаются по этой схеме. Я написал функции update () insert () delete () для автоматической проверки.
Почему? Потому что я могу принять сообщение от посетителя и отправить не проверенные данные в мою базу данных без необходимости проверять их. Моя схема фильтрует на невинные и не очень невинные нарушения.
Вот пример схемы базы данных:
<?php
$schemas = array('database_name_hidden'=>array(
'assigned_weeks'=>array(
'id'=>array('id'),
'user_id'=>array('foreign_id','users'),
'week_number'=>array('posint'),
'year'=>array('posint'),
'unit_id'=>array('foreign_id','units'),
'claim_listing'=>array('posint'),
'created'=>array('created'),
'modified'=>array('modified'),
'resort_id'=>array('foreign_id','resorts','required'),
),
'trade_listings'=>array(
'id'=>array('id'),
'assigned_week_id'=>array('foreign_id', 'assigned_weeks','required'),
'listing_assigned_week_id'=>array('foreign_id', 'assigned_weeks'),
'opposite_id'=>array('numeric'),
'listed'=>array('bool'),
'prev_id'=>array('foreign_id','trade_listings'),
'next_id'=>array('foreign_id','trade_listings'),
'listing_email'=>array('email'),
'listing_description'=>array('text'),
'trade_confirmation_number'=>array('text'),
'external_resort_id'=>array('foreign_id','resorts'),
'external_unit_number'=>array('text','size'=>array(1,6)),
'external_start_time'=>array('time_future',),
'external_end_time'=>array('time_future'),
'admin_comment'=>array('text'),
'comment'=>array('text'),
'created'=>array('created'),
'creator'=>array('creator'),
'modified'=>array('modified'),
'modifier'=>array('modifier'),
'resort_id'=>array('foreign_id','resorts','required'),
),
);
?>
Кто-нибудь еще делает что-то подобное?