weldp
Новичок
Есть "приложение работы со складом". Есть различные сущности: Пользователи и привилегии; Склады; Товары; Описания товаров, категории, номенклатура; Логи действий...
Тут нет никакой замысловатой бизнес логики и все храниться в базе данных.
Итак вся эта реализация связана с дублированием кода. Дело в том, что "Сохранение Товара" отличается от "Сохранения Пользователя" - конечным SQL, и валидацией перед сохранением
Тут нет никакой замысловатой бизнес логики и все храниться в базе данных.
PHP:
<?php
/*
Пришел GET-запрос: В зависимости от того по какому адресу(routing) - отображаем в темплейте результат выборки из базы.
Пришел POST-запрос: routing - Проверяем что есть права на действие, проверяем что все правильно, выполняем {update || remove || insert } 1-2 запроса к базе данных
*/
//slim framework взят просто для наглядности.
require 'Slim/Slim.php';
require 'Views/TwigView.php';
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
}
catch(PDOException $e) {
echo $e->getMessage();
}
// www.slimframework.com - PHP micro framework
$app = new \Slim\Slim();
// выполняем функцию при get-запросе /api/get/user/ид
$app->get('/api/get/user/(:id)', function ($id,$DBH) use ($app) {
try { $STH = $DBH->prepare("SELECT FROM `user` WHERE ....."); }
catch(PDOException $e) {
echo $e->getMessage();
}
......................
return $app->render('get_user_id.html', array(
'action_name' => 'View',
'action_url' => '/api/get/user/' . $id,
......................
));
});
// выполняем функцию при post-запросе /api/get/user/ид
$app->post('/api/get/user/(:id)', function ($id,$DBH) use ($app) {
if (validate(request()->post('name'))==true) ){
$STH = $DBH->prepare("INSERT INTO `user` ( name ) values ( 'Cathy' )");
}
................
return $app->render('get_user_id.html', array(
'action_name' => 'Edit',
'action_url' => '/api/get/user/' . $id,
......................
));
});
$app->run();
?>