
66.39
Общий рейтинг
PHP *
Скриптовый язык общего назначения
Сначала показывать
Порог рейтинга
Уровень сложности
Ещё один php шаблонизатор
9 мин
13KДоброго времени суток,
Хочу рассказать о своём шаблонизаторе для проектов на PHP.Понимаю, что рискую быть обвинённым в изобретении велосипеда, поэтому объясню свои мотивы: Большинство шаблонизаторов меня не устраивают изначально, среди них Smarty, Quicky и все им подобные, причина — мне кажется, что шаблонизатор должен избавлять от использования логики в шаблонах, а не навязывать свой синтаксис для той же логики.
Иначе говоря, такой:
- {?$x = 2+2}
, или такой
- {foreach name=my from=array('One','Two','Three') key="i" item="text"}
подходы для меня абсолютно неприемлимы!Пожалуй, из всех шаблонизаторов больше всех удовлетворяет моим требованиям xtemplate, но у него есть целый ряд недостатков которые меня раздражают, например то, что все страницы нужно обрамлять в блоки, или то, что он интерпретирует шаблоны, а не компилирует, благодаря чему скоростью похвастаться не может. Ну и последнее — я решил написать шаблонизатор так, чтобы не было никаких проблем с добавлением функционала, а также, чтобы он был совместим с нативным шаблонизатором, который я использовал до этого, и к которому привык. Дело в том что конструкция
- $tpl->assigned_var='abc';
которую часто используют нативные шаблонизаторы, мне нравится гораздо больше чем что-нибудь вроде:
- $thl->assign('assigned_var','abc');
+3
NetBeans 6.5: бесплатное и быстрое IDE для PHP
1 мин
5.3KНе смотря на то, что я в последнее время программирую на .NET, недавно мне пришлось работать над небольшим проектом на PHP. В связи с этим я занялся поиском удобной, но в тоже время, бесплатной IDE. Конечно, я знаком с Eclipse и PHP Development Tools for Eclipse, но все же хотелось узнать, а есть ли другие бесплатные программы с приличным функционалом. В результате, я вспомнил о NetBeans.
+65
Моделируете ли вы классы (UML), прежде, чем приступить к разработке? (только PHP пожалуйста!)
1 мин
2.9K+3
ShortXSLT: упрощенный синтаксис для XSLT с операторами вставки, if, else и т. д.
2 мин
2.6KБиблиотека Dklab_ShortXSLT — это система для поддержки упрощенного синтаксиса XSLT для встроенных в PHP классов XSLTProcessor и DOMDocument. Фактически, это компилятор с диалекта XSLT в стандартный XSLT, запускаемый «на лету» и «прозрачно» для вызывающего кода (естественно, имеется возможность кэширования, чтобы компиляция запускалась только в до следующего изменения шаблона). Там, где вы используете XSLT в PHP-скриптах, вы можете подключить ShortXSLT, написав несколько дополнительных строчек кода.
Стандартный синтаксис XSLT весьма громоздок, что оказывается неудобным при его использовании в Web-программировании. Библиотека позволяет облегчить эту проблему.
Поддерживаются сокращенные версии для следующих конструкций: вставка значения вне тэгов, вставка языковой константы, вставка sprintf-like константы, if-then-elseif, foreach.
Пример на ShortXSLT:
Стандартный синтаксис XSLT весьма громоздок, что оказывается неудобным при его использовании в Web-программировании. Библиотека позволяет облегчить эту проблему.
Поддерживаются сокращенные версии для следующих конструкций: вставка значения вне тэгов, вставка языковой константы, вставка sprintf-like константы, if-then-elseif, foreach.
Пример на ShortXSLT:
...
<xsl:template match="/">
{if /some/node = 1}
{#hello}, world! {#my_name_is(/my/name)}.
{elseif /other/node = /some/node}
<p>You have {/money} dollars.</p>
{else}
{foreach /nodes/*}
Node {.}<br/>
{/foreach}
{/if}
</xsl:template>
...
+6
Небольшая разминка мозгов (или quine на php)
1 мин
3.1KВстерил тут я на каком-то сайте интересную задачку, а именно:
Написать php-скрипт, который бы выводил собственный код.
Условия:
— Использовать функции чтения файла и потока нельзя.
— Код должен быть выведен от и до, включая символы <?php… ?>
— Код должен быть как можно короче.
Честно говоря, сначала я впал в ступор, но после получаса времени пришел к такому результату
(перенос строки убрать, поставлен чтоб на баннер не наезжало).
Но что-то мне подсказывает что сеё далеко не единственное решение. Поэтому просто интересно мнение сообщества — кто-нибудь может предложить еще решения? Включая всевозможные хаки, (halt_compiler разные) и др.
Написать php-скрипт, который бы выводил собственный код.
Условия:
— Использовать функции чтения файла и потока нельзя.
— Код должен быть выведен от и до, включая символы <?php… ?>
— Код должен быть как можно короче.
Честно говоря, сначала я впал в ступор, но после получаса времени пришел к такому результату
(перенос строки убрать, поставлен чтоб на баннер не наезжало).
<?$a='<?$a="%s";printf(str_replace(chr(34),chr(39),$a),$a);?>';
printf(str_replace(chr(34),chr(39),$a),$a);?>
Но что-то мне подсказывает что сеё далеко не единственное решение. Поэтому просто интересно мнение сообщества — кто-нибудь может предложить еще решения? Включая всевозможные хаки, (halt_compiler разные) и др.
+8
Превью и Resize картинок в html
1 мин
9.5KНавеяно практически одноименным постом
Я вспомнил как однажды решал указанную проблему. Мой способ очень похож но имеет несколько дополнительных плюсов… и минусов )))
Плюсы:
— Картинки генерятся только когда они нужны (т.е. мы не храним ненужных изображений и не нагружаем сервер в случае массовой загрузки изображений)
— PHP работат только первый раз (когда картинка нужного размера еще не существует)
— Размеры нужного изображения фигурируют только на стороне шаблона, т.е. грубо говоря в html
Я вспомнил как однажды решал указанную проблему. Мой способ очень похож но имеет несколько дополнительных плюсов… и минусов )))
Плюсы:
— Картинки генерятся только когда они нужны (т.е. мы не храним ненужных изображений и не нагружаем сервер в случае массовой загрузки изображений)
— PHP работат только первый раз (когда картинка нужного размера еще не существует)
— Размеры нужного изображения фигурируют только на стороне шаблона, т.е. грубо говоря в html
+1
Давайте обсудим php фреймворки
1 мин
6.2KЯ php программист, работаю с CodeIgniter. Люблю постоянно изучать что-то новое. За последнее время подтянул знания по Zend Framework, попробовал Kohana, Yii framework. Хочу попробовать ORM Doctrine, Propel.
Хотелось бы увидеть в комментах отзывы о этих разработках. Кто сколько работал, какие встречал проблемы и т.д.
Можно выделить основные минусы данных разработок, а также достоинства.
Сам хочу перейти на один из 3 названных фреймворков, но не могу выбрать. Каждый мне нравится по своему :)
Хотелось бы увидеть в комментах отзывы о этих разработках. Кто сколько работал, какие встречал проблемы и т.д.
Можно выделить основные минусы данных разработок, а также достоинства.
Сам хочу перейти на один из 3 названных фреймворков, но не могу выбрать. Каждый мне нравится по своему :)
-3
Серия 50+ советов по оптимизации PHP кода. «За» и «против» такой оптимизации. Первые 10 советов.
6 мин
21KПеревод
Это перевод первых 10-ти советов статьи по оптимизации PHP кода. На хабре есть перевод более старой версии статьи — 40 советов по оптимизации вашего PHP-кода
Я постарался не просто дополнить уже существующий перевод дополнительными советами, а внести пояснения, почему так будет быстрее, и добавил свои мысли по поводу смысла такой оптимизации, исходя их своего опыта разработки и работы в разных командах.
Пишу по частям, иначе получится очень много материала сразу.
Это моя первая статья на хабре, надеюсь она получилась интересной.
Я постарался не просто дополнить уже существующий перевод дополнительными советами, а внести пояснения, почему так будет быстрее, и добавил свои мысли по поводу смысла такой оптимизации, исходя их своего опыта разработки и работы в разных командах.
Пишу по частям, иначе получится очень много материала сразу.
Это моя первая статья на хабре, надеюсь она получилась интересной.
+44
PHP — получение суммы прописью
2 мин
58KЗдравствуйте!
Знаю что эта тема уже поднималась, но предложенный вариант, также как и функция которой я пользовался до этого, оставляли чувство что задачу можно решить проще и элегантнее. Поэтому я сел, проанализировал задачу и написал еще одинвелосипед вариант. В результате у меня получилось две функции. Текстовое представление суммы подходит для использования в различных накладных, платежках, счетах фактурах и других платежных документах.
Пример использования:
Далее сам код…
Знаю что эта тема уже поднималась, но предложенный вариант, также как и функция которой я пользовался до этого, оставляли чувство что задачу можно решить проще и элегантнее. Поэтому я сел, проанализировал задачу и написал еще один
Пример использования:
num2str(878867.15); // восемьсот семьдесят восемь тысяч восемьсот шестьдесят семь рублей 15 копеек
Далее сам код…
+9
0
Zend выпустила бета-версию собственной серверной сборки
1 мин
1K
Компания Zend пополнила свой список коммерческих продуктов для php-девелоперов.Zend Server — это серверная сборка, включающая в себя веб-сервер, собственно php, несколько инструментов от Zend (Optimizer, Debugger и т.д.), Zend Framework, средства для мониторинга и различные СУБД.
Проект находится в стадии бета-версии, доступен для Windows и Linux. Есть бесплатная версия Community Edition.
На данный момент Zend Server включает в себя:
- Apache 2.2.8 (либо использует предустановленный IIS)
- PHP 5.2.8 и пачку расширений для него
- Zend Optimizer+
- Zend Guard Loader
- Zend Debugger
- Zend Cache
- Zend Java Bridge
- Zend Monitor
- Zend Data & Page Cache
- Zend Download Server
- Oracle OCI Driver
- Zend Framework 1.7.4
- phpMyAdmin
- IBM DB2 RTCL
- MySQL Server
- MS SQL Native Client
+41
Загрузка последнего сообщения из Twitter-блога определенного пользователя
2 мин
753Написал небольшой скрипт, который получает последнее сообщение из Twitter-блога указанного пользователя. Имеет функцию кеширования — сохраняет сообщение в текстовом файле, что позволяет избежать необходимости каждый раз загружать и обрабатывать RSS-ленту микроблога. Через определенный промежуток времени кеш обновляется из web.
+4
Ближайшие события
расширение zip, небольшой хинт
1 мин
1.5KВ одном из моих проектов широко используется импорт различных данных в формате CSV. Когда-то данных было немного и всех устраивало непосредственно загрузить один-два не слишком больших файла. Со временем данных стало больше, выросли размеры импортируемых файлов и их количество. Решено было загружать файлы в ZIP-архиве: экономим трафик + имеем всего один аплоад вместо несольких.
Для работы с архивом я воспользовался расширением zip. Описывать здесь, что к чему в этом расширении, я здесь не буду, это достаточно подробно описано в документации.
Я расскажу лишь об одной особенности, которая оказалась для меня полезной. При импорте файла, который пользователь загружает в форме, сам по себе ZIP-архив на сервере ни к чему, да и распаковывать его тоже без надобности: потом ведь еще удалять придется. На помощь приходит метод ZipArchive->getStream(). Получаем с его помощью файл-хэндлер и можем спокойно скормить его, допустим, в fgetcsv.
UPD. Наверное, не совсем понятно объяснил. Мне нужны данные из тех CSV-файлов, которые лежат в ЗИПе. И нужны мне эти данные в базе данных, а не в самих ЦСВшках и уж тем более не в архиве. То есть данные из ЦСВшек я импортирую в БД. Поэтому я беру тепленьким временный файл ( $_FILES['userfile']['tmp_name'] ). И прямо не распаковывая его, импортирую все содержащиеся в нем ЦСВшки в БД. После этого PHP сам позаботится о том, чтобы удалить архив, который больше уже не нужен.
UPD. От хабраюзера Adelf: в некоторых случаях (не в моем) следует принимать во внимание факт того, что $_FILES['userfile']['tmp_name'] может быть недоступен из-за open_basedir
Надеюсь, эта информация кому-нибудь окажется полезной.
Для работы с архивом я воспользовался расширением zip. Описывать здесь, что к чему в этом расширении, я здесь не буду, это достаточно подробно описано в документации.
Я расскажу лишь об одной особенности, которая оказалась для меня полезной. При импорте файла, который пользователь загружает в форме, сам по себе ZIP-архив на сервере ни к чему, да и распаковывать его тоже без надобности: потом ведь еще удалять придется. На помощь приходит метод ZipArchive->getStream(). Получаем с его помощью файл-хэндлер и можем спокойно скормить его, допустим, в fgetcsv.
UPD. Наверное, не совсем понятно объяснил. Мне нужны данные из тех CSV-файлов, которые лежат в ЗИПе. И нужны мне эти данные в базе данных, а не в самих ЦСВшках и уж тем более не в архиве. То есть данные из ЦСВшек я импортирую в БД. Поэтому я беру тепленьким временный файл ( $_FILES['userfile']['tmp_name'] ). И прямо не распаковывая его, импортирую все содержащиеся в нем ЦСВшки в БД. После этого PHP сам позаботится о том, чтобы удалить архив, который больше уже не нужен.
UPD. От хабраюзера Adelf: в некоторых случаях (не в моем) следует принимать во внимание факт того, что $_FILES['userfile']['tmp_name'] может быть недоступен из-за open_basedir
Надеюсь, эта информация кому-нибудь окажется полезной.
+8
Русский без роботизма, часть 1
2 мин
2KЯ всецело за чистоту и правильное использование русского языка. В жизни вообще и в рунете в частности. Ибо от надписей вроде «23 штука» или усреднённых вариантов «23 шт.» мягко говоря коробит.
Поэтому, когда встала задача побороть роботизм в окончаниях существительных, была разработана и реализована соответствующая функция (вернее сказать плагин для Smarty).
Поэтому, когда встала задача побороть роботизм в окончаниях существительных, была разработана и реализована соответствующая функция (вернее сказать плагин для Smarty).
+11
Загрузка файлов и open_basedir: почему надо пользоваться стандартными функциями
2 мин
38KКазалось бы вопрос загрузки файлов на сервер обсосан до косточек, но одно недавнее событие заставило меня в этом усомниться.
Некоторое время назад в целях повышения безопасности на наших серверах была включена настройка PHP open_basedir. После этого многие PHP-приложения перестали загружать файлы на сервер.
Некоторое время назад в целях повышения безопасности на наших серверах была включена настройка PHP open_basedir. После этого многие PHP-приложения перестали загружать файлы на сервер.
+56
Ограничение скорости скачивания файлов средствами PHP
3 мин
17KИногда появляется необходимость ограничивать скорость скачивания файлов пользователями. Причин тому может быть множество (бесплатный и платный режимы, регистрация пользователя и т.д.), однако не всегда есть возможность приобрести сервер или настроить его должным образом. В данном топике предлагаю переложить задачу на плечи чистый PHP.
+22
Вертикальный текст
3 мин
3.8KПотребовалось мне использовать вертикальное расположения текста для обозначения заголовков таблицы. Поиски в интернете привели только к устаревшим или еще не утвержденным стандартам, фильтрам IE и не поддерживающих кириллицу или Mozilla Firefox SVG.
Поэтому пришлось самому решать проблему. Немножко некрасиво получилось, но меня результат устроил.

Поэтому пришлось самому решать проблему. Немножко некрасиво получилось, но меня результат устроил.

+2
Архитектура CMS
8 мин
18KИмея более чем достаточно времени, увлекся я размышлениями о создании гибкой, многофункциональной, но относительно простой CMS для программистов и её конфигураторов-пользователей. Некоторые идеи были навеяны потенциальными возможностями CMS Drupal. И вот теперь, увлеченный уже реализацией идей и имея успешные промежуточные результаты, я решил рассказать об архитектуре создаваемой CMS. По ходу прочтения общая картина возможностей CMS должна прорисовываться сама, во всяком случае, для программистов:)
Архитектура создаваемой системы основана на модульном принципе. CMS полностью строится из модулей, как детский домик из кубиков. С целью достижения гибкости и простоты взаимодействия модулей, необходимо было достичь минимальных действий для использования модулей любым компонентом системы без необходимости создания жестких связей, а также сделать возможность легкого расширения действий модулей с помощью других модулей.

Архитектура CMS
Архитектура создаваемой системы основана на модульном принципе. CMS полностью строится из модулей, как детский домик из кубиков. С целью достижения гибкости и простоты взаимодействия модулей, необходимо было достичь минимальных действий для использования модулей любым компонентом системы без необходимости создания жестких связей, а также сделать возможность легкого расширения действий модулей с помощью других модулей.

+23
Статья по мотивам моего выступления на PHPConf. Общий обзор Flex-а и связки PHP&Flex
17 мин
2KСтатья будет полезна тем, кто хочеть познакомиться с Flex и его интеграцией с PHP, оценить плюсы и минусы использование этого решения в продакшен. Хочу заметить выступление почти двух годичной давности, однако многое (практически все=) до сих пор актуально.
PHP&Flex, «новая» альтернатива для создания Rich Internet Applications
PHP&Flex, «новая» альтернатива для создания Rich Internet Applications
+50
Вклад авторов
pronskiy 10649.4SamDark 1519.8AloneCoder 987.8youROCK 823.0AntonShevchuk 815.0spasibo_kep 731.0AlexLeonov 620.0olegbunin 560.0zapimir 559.0alexzfort 558.0