Блог

1 2 3 4

08-06-2016
0
747
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Паттерны в PHP. Компановщик (Composite).

Компоновщик (Composite), это паттерн, который помогает разрулить ситуацию, не предусмотренную штатными средствами. А именно множественное наследование. Впрочем он может быть полезен и при работе с одним классом, но все по порядку. Один из четырех китов ООП - наследование последнее время всё чаще предается гонениям. Заменяющий его паттерн "Декоратор" и делегирование мы уже рассматривали. Теперь еще один, который наносит наследованию хук слева. Компоновщик. Уже из названия видно, что он должен что то скомпоновать, совместить, собрать в кучу. Как обычно, рассмотрим пример из жизни. Допустим мы хотим испить горячего кофе со сливками (как то странно звучит название водки...). Если ...
Теги:
09-04-2016
0
933
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Фреймворк vs сборка библиотек

Название статьи немного не корректное. Здесь описано не противопоставление, что лучше, а что хуже. Эти две архитектуры равноправны, просто служат для разных целей. Тут описаны основные различия, плюсы и минусы обоих подходов, и сферы их применения. Начнем с основы. Повальное увлечение php-программистами объектно ориентированным програмированием, а так же не совсем уместное применение основных принципов и паттернов построения архитектуры привело к тому, что схема фреймворка была возведена в ранг чуть ли не единственно верной. На фоне этого забыли, а многие просто не знают, так как сразу начали учиться по схеме фреймворка, что есть еще и другая - ...
Теги: PHP | Флейм
09-04-2016
0
951
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Шаблоны проектирования. Помощники или стереотипы?

Те программисты, кто умудрился продвинуться чуть дальше Hello World, рано или поздно сталкиваются с такими понятиями, как GRASP, GoF, SOLID и другими рекомендациями. Это хорошо, но плохо то, что эти практики, с подачи не совсем опытных адептов ООП воспринимаются, как правила. А это не так. Между правилами и рекомендациями довольно серьёзные различия. Правило - штука, обязательная к исполнению. Это требование. Если сделать что-то не по правилам, то либо результат будет не тем, что ожидается, либо будут неприятности. Рекомендация, это совет. Штука не обязательная к выполнению. Это накопленный и обобщенный опыт, передаваемый малоопытным субъектам. Для примера - синтаксис ...
Теги: PHP | Флейм
04-02-2016
1
1128
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Паттерны в PHP (Decorator)

Этот паттерн лучше объяснять снизу вверх. То есть по мере поступления проблем. Приступим. Если кто читал предыдущую статью, то мог обратить внимание, что я имел наглость сравнить ООП с фаст-фудом. Буду последовательным, и возьму пример оттуда. Тем более он, на мой взгляд, весьма подходящий. Представим себе точку быстрого питания, где решили делать гамбургеры. Нет ничего проще - берем два кусочка хлеба и суем между ними котлетку: ...
Теги: Паттерны | PHP
30-01-2016
0
1705
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Парадигмы ООП не существует или "Свободная касса!"

Эпотажный заголовок, не правда ли? Однако давайте разберемся. Существует ли темнота? Не торопитесь. На самом деле нет: это просто отсутствие света. Её нельзя измерить, нельзя изменить, нельзя вообще ничего с ней сделать. Её нет как предмета. Если темнота "неполная", то это уже не темнота, а слабая освещенность. Освещенность можно конкретно измерить в люксах, единицы измерения темноты нет и быть не может. Она существует только в нашем воображении. Так же как и парадигма ООП. Вы скажите, что так можно рассудить по отношению к любой другой парадигме. А вот и нет. У любой другой есть четкие определения и правила, по ...
Теги: PHP | Флейм
25-02-2015
2
2680
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Наследование или делегирование.

Те, кто взялся изучать ООП, много раз слышали мантру, что оно держится на трех китах: Инкапсуляция, Полиморфизм, Наследование. Первых двух китов оставим в покое, пусть себе плавают. А вот с наследованием не все так гладко. Последнее время все чаще слышатся призывы по возможности отказываться от наследования, заменяя его делегированием. Давайте разберемся, что вкладывается в эти понятия и с чем их употреблять в пищу. Наверняка вы знаете, что механизм наследования включается директивой extends. Однако мало кто задумывался над тем, почему так. Почему назвали extends (расширение), а не скажем inheritage (наследование как есть). Все дело в том, что наследование - ...
Теги: Паттерны | PHP
21-01-2015
4
2745
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Маша и медведь. (К вопросу о читабельности кода)

Тут на днях объяснял человеку, как писать читабельный код. Ну что касается стиля, это я уже описывал здесь и здесь. Вопрос стоял в другом - что именно нужно отделять пустой строкой. С одной стороны лишние пустые строки вредят читабельности, ибо на экран входит меньше полезного кода. С другой стороны, без выделений получается каша. Где золотая середина? Так вот, мне просто понравился пример, который случайно попался под руку. Сказка про Машу и медведя. Поделюсь с вами. Вообще принцип написания читабельного кода прост. Любой код на скриптовом языке программирования, это обычный текст. Со смыслом. Ибо скрипт. это ни что ...
Теги: PHP | Флейм
03-10-2014
6
5356
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Паттерны в PHP (Registry)

Продолжим цикл статей про паттерны. Прошлая статья моя была про конструкцию global. Если кто читал, там мельком описывался паттерн Registry (реестр). Ну вот сейчас попробую описать его немного подробнее, разжевать в манную кашу, так сказать. Вообще суть любого паттерна - упростить то, что мы до этого специально усложнили. Давайте проследим "эволюцию" зарождения патерна Registry. Сначала было слово... Нет, не так далеко. Сначала были машинные коды. Потом, для упрощения, появились языки программирования (ЯП). Это своего рода программы, фактически переводящие человеческую речь в те самые машинные коды. Первые ЯП были просты и примитивны, и, как ...
Теги: Паттерны | PHP
04-09-2014
6
3177
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

global - зло?

Конечно да! - воскликнет 90% программистов, ведь это (впитывается с молоком матери) написано на всех Хабрах, Мабрах и иже с ними. И приведут кучу обоснований: 1. Сложно понять, где инициализируется переменная, доступ к которой осуществляется посредством global. Соответственно это ухудшает читабельность кода. 2. Глобальная переменная может быть переопределена в дебрях скрипта, и найти это место очень сложно. А значит велик риск сложнодиагностируемых логических ошибок. 3. Код становится сильносвязанным, выполнение одной части будет зависить от другой, где глобальная переменная определена. Ну и еще кое-что по мелочи. Не стану с этим спорить, все так. Однако посмотрим, что предлагается взамен. ...
Теги: PHP
24-05-2014
0
6404
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Определение IP пользователя.

Многим уверенным пользователям интернета известна эпическая фраза, наводящая ужас на бедных анонимусов: Однако не все умеют делать это правильно. И в силу этого рискуют получить неверное значение IP, а в результате получить по морде лица, если по этому неверному адресу окажется не тщедушный ботаник, а какой-нибудь Чак Норрис. Вот дабы избежать подобных досадных недоразумений, попробуем разобраться, что такое IP и как его правильно "вычислить". IP - это аббривиатура понятия Internet Protocol, того самого протокола, который объединяет различные компьютерные сети в наш горячо любимый интернет. Как устроен этот протокол и какие у него особенности - отдельная ...
Теги: PHP | Флейм
1 2 3 4
 
Наверх