|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Хабрахабр: PHP / Блог / Захабренные/Записи в блоге |
|
Хабрахабр: PHP / Блог / Захабренные
Голосов: 1 Адрес блога: http://habrahabr.ru/blog/php/ Добавлен: 2008-06-12 19:52:35 блограйдером ZaiSL |
|
KodiCMS — CMS на Kohana framework
2014-10-17 01:29:14 (читать в оригинале)Всем привет, на Хабре уже вот как 6 лет и только сейчас решился написать свой первый пост, хотя до сих пор не уверен что это хорошая идея :)
Предисловие
Уже более 6 лет я занимаюсь разработкой web приложений, начинал с верстки, javascript, php, python и т.д., в общем за все время я прошел все этапы создания сайта от дизайна в фотошопе и заканчивая созданием полноценного сайта.
Краткий рассказ о том как я разрабатывал CMS
Еще одна коробочная CMS — знакомство с FFCMS
2014-10-16 18:21:40 (читать в оригинале)
Добрый день, читатели и авторы habrahabr! Сегодня я хочу рассказать вам о еще одной небольшой коробочной системе управления содержимым сайта FFCMS, разработкой которой (ранее — для собственных проектов, а теперь и для всего сообщества) я занимаюсь чуть более года. В данной статье я хочу кратко рассказать о том, что умеет данная система, кратко коснуться освещения возможностей основных интерфейсов системы и немного рассказать о технических деталях.Дисклеймер: я не претендую на звание разработчика «инновационной системы» и я ничего не продаю, а лишь хочу представить открытую систему управления сайтом, которая возможно упростит жизнь разработчику и веб-мастеру. Система не основана на каком-либо популярном фреймворке — реализованы лишь минимальные методы для взаимодействия между расширениями, роутингом и шаблонными представлениями.
Читать дальше →
[Перевод] Методы в примитивных типах PHP
2014-10-16 13:26:20 (читать в оригинале)Некоторое время назад назад Энтони Феррара выразил мысли по поводу будущего PHP. Соглашусь с большинством его взглядов, но не со всеми. В статье я остановлюсь на одном конкретном аспекте: преобразования примитивных типов данных, таких как строки или массивы, в “псевдо-объекты”, позволяя выполнять в них вызовы методов.
Начнем с нескольких примеров:
$str = "test foo bar";
$str->length(); // == strlen($str) == 12
$str->indexOf("foo") // == strpos($str, "foo") == 5
$str->split(" ") // == explode(" ", $str) == ["test", "foo", "bar"]
$str->slice(4, 3) // == substr($str, 4, 3) == "foo"
$array = ["test", "foo", "bar"];
$array->length() // == count($array) == 3
$array->join(" ") // == implode(" ", $array) == "test foo bar"
$array->slice(1, 2) // == array_slice($array, 1, 2) == ["foo", "bar"]
$array->flip() // == array_flip($array) == ["test" => 0, "foo" => 1, "bar" => 2]
Здесь
$str — это обычная строка и $array является простым массивом — они не объекты. Мы просто даем им немного объектного поведения, позволяя вызывать в них методы.Обратите внимание, такое поведение совсем не за горами. Это уже не сон, кое-что уже существует прямо сейчас. PHP расширение scalar objects позволяет определить методы для примитивных типов.
Читать дальше →
ZExt Framework :: Работа с MongoDB
2014-10-16 07:37:40 (читать в оригинале)Здравствуй Хабрасообщество!
Сегодня я хочу рассказать о полезной возможности фреймворка «ZExt»: работе с базой данных MongoDB.
Рассматриваемая ниже связка модулей, даёт возможность работать с вызовами к Mongo в стиле query builder-а знакомым многим по различным SQL-ORM.
Давайте рассмотрим простой пример в качестве вступления:
use ZExt\Datagate\MongoCollection;
class ProductsDatagate extends MongoCollection {
public function getProductsByManager(array $managerId, $minPrice = null) {
$query = $this->query()
->where('managerId IN(?)', $managerId)
->where('enabled = ?', true);
if ($minPrice !== null) {
$query->where('price >= ?', $minPrice);
}
return $query->find();
}
}
Читать дальше →
Использование паттерна Proxy для организации кэширования на PHP
2014-10-16 00:00:09 (читать в оригинале)Постановка задачи. Имеется действующий отлаженный проект на PHP, содержащий десяток моделей, в каждой из которых по 5 методов выборок данных. Проект растет, всё хорошо, но в определенный момент, под тяжестью нагрузки, назревает необходимость добавить каким-то образом кэширование обращений к моделям.
Возможные решения.
Первый способ «в лоб»: в каждый метод модели добавляем кэширование по стандартной схеме: проверить кэш, если есть актуальные данные, возвращаем их, если нет — выполняем метод, как было до этого и плюс в конце еще пишем, полученные из базы, данные в кэш. Сказать, что это ужасный способ значит, ничего не сказать, поэтому просто скажу, почему это плохо:
- Нарушается один из принципов SOLID, «код должен быть открыт для расширения, но закрыт для изменений», т.е. мы берем и ломаем уже отлаженный выпущенный в продакшн код для того, чтобы добавить новую функциональность, а это всегда вызывает шквал ошибок и как следствие недовольство пользователей и заказчика.
- В одном и том же коде смешивается логика получения данных и кэширование, что приводит к распуханию классов и беспощадному повторению кода.
- Сделав так, мы лишаемся возможности получить живые данные в обход кэша (следующим шагом будет добавление флага $nocache).
- Очень высокая трудоёмкость впиливания кэширования таким способом и ещё большая трудоёмкость выпиливания его потом.
Второй способ, «расширяем классы моделей»: добавляем в модели методы-дублеры, которые оборачивают вызовы существующих методов в кэширование, например findById_Cached().
Вроде бы лучше, существующие методы не трогаем, вместо этого добавляем новые. Но остальные минусы на месте:
- Смешивание логики.
- Размеры классов растут ещё больше, чем в предыдущем способе.
- Очень высокая трудоемкость (добавить 50 новых методов, в нашем примере) + заменить везде в приложении вызовы старых методов, на новые, а если в будущем придется кэширование выпиливать, то еще и повторить все действия назад.
Третий способ «кэширующий прокси», очень простое и быстрое решение, поражающее своим изяществом и скоростью внедрения. Как его сделать – смотрим код.
Читать дальше →
Категория «Экономика»
Взлеты Топ 5
|
| ||
|
+383 |
455 |
@дневники: Anna_Sergeevna - В России нужно жить долго |
|
+352 |
458 |
GBlog - Блог |
|
+332 |
464 |
Заэкранье |
|
+331 |
344 |
Media_Sapiens |
|
+324 |
325 |
Темы_дня |
Падения Топ 5
|
| ||
|
-3 |
10 |
GetProfit |
|
-6 |
26 |
ГОЛУБЫЕ ФИШКИ |
|
-8 |
418 |
В Донецке |
|
-8 |
208 |
Finomy - Финансовый блог |
|
-13 |
24 |
Блог виртуального риэлтора |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.
