Блог

1 2 3 4

25-02-2015
2
4648
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

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

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

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

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

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

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

global - зло?

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

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

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

Загрузка файлов

Часто возникает ситуация, когда нужно обеспечить пользователю возможность самостоятельно загрузить на сервер какой то файл. К примеру аватарку на форум. Так вот - загрузка файлов не очень сложная операция на самом деле, если усвоить несколько моментов. Начнем по порядку. Нам понадобится форма загрузчика: Главное, чем отличается форма загрузки файлов от обычной формы, это атрибут ecntype="multipart/form-data", который как раз и указывает на то, что будет загружаться файл. Для загрузки файлов надо использовать метод POST. Тег <input> с атрибутом file позволяет пользователю выбрать загружаемый файл. Далее пользователь выбирает файл, нажимает кнопку загрузить, и за ...
Теги: PHP | HTML
17-02-2014
0
3482
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Кодировки файлов

Я не зря именно так назвал статью. Я прекрасно знаю, что нет понятия "кодировка файла". Однако народ с каким то невероятным упорством продолжает оперировать этим термином. Ну а значит, рано или поздно, они придут сюда по такому запросу. Ну а что же есть, если нет кодировки файла? Сначала давайте разберемся, что вообще такое "кодировка". Любой символ на экране монитора состоит из совокупности точек. А значит, чтобы отрисовать какую-нибудь букву, нужно задать компьютеру множество координат этих точек. Кроме того, шрифты бывают разными по величине, жирности, наклону, цвету наконец. Представьте себе объем информации, который требуется для передачи координат точек допустим текущей ...
Теги: PHP | HTML
26-12-2013
8
7587
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

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

Начинающие программисты, столкнувшись с ООП, обязательно натыкаются на необходимость использования (ну или хотя бы понимания) шаблонов проектирования. И это многих пугает. Мало того, что сама парадигма достаточно сложна для понимания, так еще и паттерны какие-то. И хотя они как раз и придуманы для облегчения использования парадигмы, на первых порах играют как раз обратную роль. А всё из-за того, что те, кто придумывают паттерны, давно в ООП как рыба в воде, соответственно и объясняют их со своей колокольни. И получается замкнутый круг. Не зная паттернов сложно грамотно использовать ООП парадигму, однако не зная ООП сложно понять эти самые паттерны. А все ...
Теги: Паттерны | PHP
17-12-2013
2
4130
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Транслитерация

Статья в рамках программы переноса материалов со старого сайта. Транслитерация - есть передача звучания речи на одном языке посредством записи ее символами алфавита другого языка. На практике такая необходимость встречается не часто, но для аргументации приведу пару примеров: 1. Передача русской речи с компьютера из-за границы, где не предусмотрена русская раскладка клавиатуры. 2. Оформление заголовков (например, в библиотеках), где название не должно переводиться. 3. Написание фамилии в загран-паспорте. Ну и прочее. В сайтостроении это действие нужно там, где нельзя использовать кирилицу, а исходный текст именно на ...
Теги: PHP | seo
11-12-2013
11
5434
Голосовать могут только зарегистрированные пользователиГолосовать могут только зарегистрированные пользователи

Базовая аутентификция.

Статья в рамках программы переноса материалов со старого сайта. Базовая аутентификация - простейший вид защиты каталогов на сайте. Но не смотря на её простоту, она достаточно надежна для того, чтобы спать спокойно, не опасаясь за сокровища, которые хранятся на сайте. Правда есть одна тонкость. Если PHP стоит не как модуль, а как CGI, то такая аутентификация работать не будет. Увы. Давайте рассмотрим, как это можно сделать. Вариант 1. Защита подключаемым файлом Раз мы не используем базу данных, то значит аутентификационные данные будут хранится в файле. Чтобы они не стали достоянием общественности, файл должен быть исполняемым, то ...
Теги: PHP | MySQL
1 2 3 4
 
Наверх