[Из песочницы] Ускоряем разработку на PHP с помощью перегрузки
Проблема Часто приходится писать так (примеры кода на Yii, но подход можно применить к любому коду):$model = new User (); $model→name = 'Вася'; if (!$model→save ()) throw new RuntimeException ('Can not save!'); Или так:$model = User: model ()→find (); if (!$model) throw new CHttpException (404, 'User not found!'); Кеширование:$dependency = new \caching\TagDependency ('Post'); $posts = Post: model ()→cache (1000, $dependency)→findAll (); Транзакции:$trx = $this→getDbConnection ()→beginTransaction (); try { if (!$user→makePayment ()) throw new \RuntimeException ('Can not complete!');
$trx→commit (); } catch (\Exception $e) { $trx→rollback ();
throw $e; } Слишком много кода! Решение Вышеприведенные куски кода можно сократить до: Возбуждаем исключение в случае неудачного результата:$model→saveException (); User: model ()→findException (); Post: model ()→findAllCached (); Оборачиваем метод в транзакцию:$user→makePaymentTrx (); Также возможны комбинации: User: model ()→findTrxCached () Читать дальше →