PHP

индекс
206,76

Мультимагазин. Статья для начинающих веб-программистов

Многие интересные технические решения, возникают в результате решения интересных проблем. А кто придумывает или создает такие проблемы инженерам? Ответ — конечно пользователи. Вот и эта статья как раз рассказывает об одной такой интересной проблеме и ее решении.

Итак. В общем, проблема, со слов пользователя, выглядит, как необходимость создать один Основной интернет магазин и несколько Дополнительных. Основной магазин имеет полную базу товаров. Товар Дополнительных магазинов формируется путем запроса списка товаров из Основного магазина. Основной магазин, получив при запросе от Дополнительного магазина его идентификатор, отдает нужный товар.

Теперь рассмотрим проблему глазами инженера, учитывая, что базы товаров Основного и Дополнительного магазина находятся на одном сервере. Количество Дополнительных магазинов нам не известно, но очевидно, что нагрузка на Основной магазин будет большой. Большое количество разного товара не дает нам возможности точно сформировать структуру таблиц с товаром. Свойства товара очень сильно разнятся в зависимости от его категории. Суммируя полученные данные, задача для проектировщика Основного магазина звучит как:

Спроектировать базу данных Основного магазина так, чтобы скорость выборки товара была очень быстрая, а свойства товара, его атрибуты, были динамическими.
–14
3 февраля 2012, 10:28
37

На основе каких возможностей PHP и каким способом вы разрабатываете приложения?

3.53%
(32)
Приложения? Я пишу только cgi-скрипты для обработки форм.
9.16%
(83)
Только структурное программирование (функции, инклуды). Быстро и просто.
14.02%
(127)
В основном структурное программирование, но использую классы для сложных структур, работы с БД.
18.43%
(167)
Реализую MVC, активно использую для этого классы, их методы, наследование и перегрузку.
9.82%
(89)
Строго придерживаюсь ООП, помимо прочего, использую пространства имен, области видимости, интерфейсы, трейты (traits), клонирование и автозагрузку классов.
6.62%
(60)
Комбинирую технологии самым неожиданным образом. Подробности в комментариях.
28.37%
(257)
Не изобретаю велосипедов, выбираю конкретный фреймворк (symfony, kohana, yii...) и делаю всё по гайдлайнам.
1.88%
(17)
Не могу влиять на архитектуру приложения и способ разработки. Делаю так, как сказал начальник.
8.17%
(74)
Не разрабатываю приложений. Я только конфигуратор CMS. Иногда дописываю к ним модули/плагины.

Проголосовало 906 человек. Воздержалось 456 человек.

–3
1 февраля 2012, 20:53
aur

THP — попробуем объяснить популярно на примерах

После провального топика Template Hypertext Preprocessor — язык программирования, презентация open source проекта мне посоветовали объяснить не научными тезисами, а научно-популярно на примерах. Карма есть, наверное в процессе её не станет, попробуем повторить. Переходим к делу. К сожалению не могу без предыстории. Те кто не хочет истории может переходить к концепции.

История


Давайте на секунду задумаемся, как мы программировали приложения до данного момента.

В самом простом виде, это был вызываемый скрипт, который наверху перед тегом HTML вызывал некий движок, который вычислял данные и заносил их в глобальные переменные, или одну глобальную переменную — объект класса, либо большой ассоц. массив.
Немного в лучшем виде, конечно же это шаблонизатор. У вас вызывается тот же скрипт, только в нем нет ни капли HTML, вместо этого вы подключаете тоже ядро, и из тех же переменных заносите в шаблонизатор какие-нибудь данные, потом говорите ему «выведи мне это», а тут и шаблон и вроде удобства и то не всегда так как хотелось. (касательно синтаксиса).
–22
1 февраля 2012, 07:18
13

Template Hypertext Preprocessor — язык программирования, презентация open source проекта

Представляю вам новый open source проект. Надеюсь, что он будет интересен хабраобщественности и IT общественности в целом. Размещаю в блоге PHP, потому что интерпретатор написан на PHP и может быть непосредственно использован для создания решений.
Template Hypertext Preprocessor – Специализированный, cверхвысокоуровневый, скриптовый язык программирования, для генерации динамических блоков html документа. Отличается особым удобством для создания и модификации динамических интерфейсов html страниц, встраивается в язык разметки html с сохранением валидности исходного документа, прозрачен с точки зрения ООП, является платформенно независимым.

Для данного языка программирования реализован интерпретатор, основанный на языке PHP под названием “Template Engine”. Интерпретатор, отличается компонентной многоуровневой архитектурой, создает разумные ограничения работы на уровне спецификации, позволяет запускать голый PHP код и нативные PHP файлы в среде Template Engine. Спецификация THP / Template Engine создана таким образом, что бы максимально упростить разработчикам создание приложений и их расширение, а так же максимально структурировать код.

Видеотуториал


Для тех, кто хочет перейти сразу же к практике я подготовил видеотуториал по установке и объяснению базовых узлов системы. Установкой является: скачать и расположить на сервере, все остальное за исключением паролей БД, должно заработать само. Сайт проекта: http://thp.wartur.ru/



Дополнительная общая информация под катом
–13
31 января 2012, 08:03
16

Дай пять или еще один PHP/CSS фреймворк из песочницы

Иногда, делая самую простую задачу, хочется, чтобы код решения был структурирован. На ум сразу приходят фреймворки. Фреймворков много, и есть здесь из чего выбрать. Но почти все из них являются очень громоздкими для решения небольших задач и имеют кучу документации, в которой еще нужно разобраться. В итоге затея с фреймворком сразу же отпадает, и пишется свое импровизированное решение со своей структурой. Highfive framework (или далее h5) пытается решить подобные ситуации, предоставляя каркас для простого приложения.

Сам фреймворк едва умещается на один экран монитора и является просто идеей и минималистичной ее реализацией. Состоит всего из четырех функций (view, action, pdo, wtf) и нескольких каталогов с файлами.

–23
26 января 2012, 17:21
19

Универсальный класс автозагрузки

Прочитав этот хабратопик. Решил поделиться своим классом автозагрузчика (вдруг кому пригодится), который умеет рекурсивно искать нужные файлы, не только классы, но и любой другой, переданный ему файл, ну и если там где указано файл не найден, то производит поиск по всему серверу начиная от корня, если файл найден где-то не там, генерит соответствующее сообщение, умеет работать с пространством имен и логировать свои действия в случае необходимости.
–12
24 января 2012, 12:12
23

Protected, Private и переопределение

Создаём свойства

При создании свойства класса, может возникнуть вопрос, как его объявить: private или protected?
Отличаются эти варианты тем, что protected виден классам-наследникам, а private нет.
И это даёт нам возможность скрыть от наследников переменную, чтобы они не напортачили в ней.
То есть, в большинстве случаев мы должны стремиться к тому, чтобы все свойства были private.

Классу-наследнику, вполне возможно, потребуется получать это свойство — для этого в родителе можно создать protected метод.
class Example
{
	private $field;

	protected function getField()
	{
		return $this->field;
	}
}

–9
19 января 2012, 04:09
21

Разработка модульного движка на PHP из песочницы

Есть много разных движков на PHP, от достаточно простых, до очень тяжеловесных и громоздих, включающих практически все.

Но на мой взгляд лучший движек — расширяемый. И не такой, что к куче своих возможностей предлагает прикрутить еще и некоторые, а такой, в которого своих возможностей как-бы и нет, а есть только подлкючаемые на выбор.
–2
29 ноября 2011, 22:55
43

Защита от сохрания изображений из песочницы

image
Здравствуйте, уважаемые харбрачитатели.
Некоторое время назад я столкнулся с очень, на мой взгляд, интересной задачей. Суть задачи заключалась в том, что необходимо максимально усложнить процесс сохранения картинок со страниц сайта. При этом картинки могут быть разных размеров.

Задача ясна, приступим к её решению. В общем случае процесс сохранения картинки достаточно прост: кликаем по ней правой кнопкой мышки и в открывшемся меню выбираем «Сохранить изображение…» (в разных браузерах надпись может отличаться). Перехват нажатия правой кнопки мышки частично решит эту задачу, но обход данного ограничения до безобразия прост – отключаем JavaScript и спокойно вызываем контекстное меню. В этом случае достаточно картинку сделать фоновым изображением:
–31
9 ноября 2011, 15:55
27

Какой PHP Framework Вы используете?

17.53%
(315)
Yii
9.29%
(167)
CodeIgniter
11.8%
(212)
Zend
2.17%
(39)
CakePHP
6.46%
(116)
Symfony
7.51%
(135)
Kohana
7.79%
(140)
Другой
37.45%
(673)
Не использую

Проголосовало 1797 человек. Воздержался 531 человек.

–2
8 ноября 2011, 20:38
6