Обновить
128K+

PHP *

Скриптовый язык общего назначения

109,97
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Плагинизация классов

Время на прочтение2 мин
Охват и читатели1.9K
Как-то медитируя на свой новый велосипед подумал, – А почему бы не заложить в него возможность «плагинизации» контроллеров?

Чтобы вот был, например, у нас некий базовый класс Generic.php:
<?php
class Generic
{
  public function Hello() {
    echo 'Hello!';
  }
}
?>


А мы такие взяли и повешали бы на него пару плагинов, которые дополнят/изменят какие-либо его методы не мешая друг-другу (по принципу «кто первый встал – того и тапки»).

Вот они красавцы:
PluginFoo.php:
<?php
class PluginFoo extends Generic_PluginFoo
{
  public function Hello() {
    echo 'Dudes?<br />';
    parent::Hello();
  }
}
?>

и PluginBar.php:
<?php
class PluginBar extends Generic_PluginBar
{
  public function Hello() {
    parent::Hello();
    echo '<br />O.o';
  }
}
?>


А потом мы создали бы объект родительского класса (не обращаясь к последнему потомку), вызвали метод Hello() и тот сказал бы нам:
Dudes?
Hello!
O.o


Ниже лаконичный вариант того как описанного поведения добился ort в своём LiveStreet, а затем уже и я в своём собственном велосипеде.
Читать дальше →

Задача при собеседовании на работу в один крупный шведский сайт

Время на прочтение2 мин
Охват и читатели14K
Я — PHP-Developer, живу в Стокгольме. Недавно был на собеседовании в один большой шведский сайт (более миллиарда page views в месяц). Интервью проводили 2 программиста из этой фирмы. В определенном моменте, один из них достал листок бумаги и сказал, что предлагают мне решить небольшую задачку (тут же на бумаге, без компьютера). И что у меня есть 10 мин. Попросили так же комментировать каждый шаг.

Скажу сразу, что я ее не решил. Сначала все вроде просто, а потом… Так что, ушел со встречи не солоно хлебавши. С моей стороны она так и осталась нерешенной.

Зачем публикую это? Во-первых, может кому-то пригодится как хороший тест для нанимаемых разработчиков; во-вторых, кто-то, если встретит нечто подобное, будет уже полон знаний; в-третьих, может кто-нибудь поместит правильное решение в коментах?

Ниже — сама задача. Оставляю все в оригинале, как было.
Читать дальше →

MarkHtml

Время на прочтение1 мин
Охват и читатели1.9K
Библиотека для чистки HTML кода от XSS вставок и лишних закрывающих тегов, позволяет фильтровать входные данные, способные нарушить работу сайта.

В отличии от других аналогичных библиотек, например Jevix, ставка сделана не на разрешающие теги и атрибуты, а на запрещающие. То есть, возможно вводить всё, кроме запрещённого.

Читать дальше →

Установка расширений OCI8 и PDO_OCI для PHP5

Время на прочтение4 мин
Охват и читатели41K
В настоящее время я работаю в компании, которая очень любит использовать в проектах на PHP СУБД Oracle, причем иногда версии 11g.

Большая часть разработчиков этой компании работает под ОС Windows. За последний месяц несколько из них решили приобщиться к Linux и поставили себе Ubuntu. По прошествии нескольких дней после установки самой ОС, ребята столкнулись с задачей установки драйверов PHP для работы с СУБД Oracle — OCI8 и PDO_OCI на базе Oracle instant client 11.2, которую не смогли решить самостоятельно.

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

Мануал написан для пользователей Ubuntu Linux, но с некоторыми изменениями подойдет для пользователей большинства Linux'ов.

Читать дальше →

ICQ баг-информер на PHP + ActiveMQ

Время на прочтение9 мин
Охват и читатели10K
Я являюсь разработчиком и смотрителем довольно крупной системы он-лайн бронирования одного из московских туроператоров. Поскольку к этой системе предъявляются весьма высокие требования в плане надежности и безопасности, мне приходится отслеживать все возникающие в ней ошибки, однако постоянно заходить и просматривать, нет ли новых отчетов, не очень удобно и поэтому возникла необходимость в неком средстве мгновенного оповещения, причем оно должно поддерживать возможность отправки сообщений как из веб-части, так и из десктопных приложений.

В этой статье я хочу рассказать о своем опыте написания скрипта для мгновенного оповещения о возникающих в системе ошибках посредством ICQ сообщений. В качестве промежуточного звена и накопителя репортов используется брокер сообщений ActiveMQ, я расскажу как его установить и настроить для работы с MySQL. Главная часть — это ICQ-бот, написанный на PHP, в его обязанности входит прослушивание определенного канала в брокере и пересылка сообщений на указанные номера ICQ. Также я расскажу как запустить этот PHP скрипт в качестве службы Windows.
Читать дальше →

wiki.php.net скомпрометирован

Время на прочтение1 мин
Охват и читатели1.5K
Вольный перевод новости:
wiki.php.net был скомпрометирован и атакующим удалось собрать данные от аккаунтов. Другие подразделы инфраструктуры php.net, по нашим данным, не пострадали. Наша главная забота сейчас — целостность исходников. Мы провели всевозможные проверки на каждый коммит начиная с выпуска php версии 5.3.5, чтобы удостовериться, что украденные аккаунты не были использованы для внедрения вредоносных кодов — все в порядке. Скомпрометированные машины были очищены, все пароли к аккаунтам в SVN сменены.
Мы продолжаем расследование по факту атаки, которая являлась сочетанием использования уязвимости в движке софта Wiki-раздела и эксплойта к Линуксу для получения прав администратора.
источник

UPD: 20.03, 10:20 — wiki.php.net и windows.php.net до сих пор не доступны (да-да, страничка для пользователей Windows вчера также была недоступна, но я это заметил еще до прочтения новости, а после не додумался связать). Это лишь мои наблюдения — может, кто-то еще что-нибудь заметил?

Применение алгоритмов нечеткого поиска в PHP

Время на прочтение7 мин
Охват и читатели31K
Вдохновленный топиками о нечетком поиске и фонетических алгоритмах, захотел попытаться реализовать нечто подобное похожее на гугловское «Возможно, вы имели в виду: ...» средствами PHP.

Для исправления опечаток в словах понадобится:
Расстояние Левенштейна (или расстояние Дамерау-Левенштейна — разница будет незначительной) — levenshtein()
Metaphonemetaphone()
Алгоритм Оливера — similar_text()
База русских слов (с падежами, учетом времен и т.д.).
Читать дальше →

Идея Doctrine I18n в Magento

Время на прочтение8 мин
Охват и читатели1.2K
Все началось с того, что я взял на доработку очередной фриланс проект. Заданием было доделатьреализовать мультиязычный модуль Галереи. Проблема возникла, как всегда внезапно…
Читать дальше →

Локализация интерфейса сайта с использованием PHP, Smarty и Gettext

Время на прочтение3 мин
Охват и читатели27K
Все началось с того, что к существующему сайту понадобилось добавить русскую локализацию. После того как я изучал в течение нескольких дней эту тему и наступил множественные грабли, я в конце-концов получил рабочий сайт. А теперь хочу поделиться рецептом многоязычной локализации.
Проверено и отработано на PHP 5.3.3 (Linux)/PHP 5.3.1 (Windows) + Smarty 3.0.7. В данном случае для существующего сайта на английском создавалась русскоязычная версия.
Я не провожу ликбеза на тему «как это работает» (он есть на phpclub), но предлагаю простую инструкцию и описание возможных проблем, с которыми я сталкивался во время реализации.
Погрузиться в дебри локализации

Бесплатная Zend Studio

Время на прочтение1 мин
Охват и читатели13K
Прошу обратить внимание всех Zend Certified Engineers, что начиная с 27 марта Вы можете получить бесплатную копию Zend Studio и Zend Server. Скудные подробности по ссылке Free Zend Studio и Zend Server
А тем, кто еще не стал ZCE, думаю это послужит еще одним дополнительным стимулом для того что бы собраться и наконец сдать этот экзамен. Поверьте это не очень сложно ;)

Netbeans IDE 7.0 Beta 2 for PHP

Время на прочтение1 мин
Охват и читатели3.1K
image

Начну с сылок на аналогичные материалы с хабра:
habrahabr.ru/blogs/java/111438
моя предыдущая заметка об этой IDE:
habrahabr.ru/blogs/php/107261
страница релиза: www.netbeans.com/community/releases/70
Опять рассмотрю коротко и сжато IDE в приложении к PHP.
Читать дальше →

Ближайшие события

Отправляем SMS со своего номера Мегафон без GSM-аппарата

Время на прочтение1 мин
Охват и читатели27K
Приветствую!

Некоторое время назад Yastrebon опубликовал найденную фичу отправки sms\mms через шлюз Мегафона. Причем отправлять со своего номера и оплачивать со своего-же счета (включая разные бонусные программы и пакеты).

Выдалось свободное время и я решил написать библиотечку-враппер над этим сервисом.

Читать дальше →

Порядок выполнения тернарного оператора

Время на прочтение3 мин
Охват и читатели37K
В php есть интересная особенность тернарного оператора — специфический и уникальный порядок выполнения.

$ python -c "print 1 if true else 2 if true else 3 if true else 4 if true else 5"
 1

$ node   -e "      true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ perl   -e "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ ruby   -e "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5"
 1

$ php    -r "print true ? 1 : true ? 2 : true ? 3 : true ? 4 : 5;"
 4
Java и C++ тоже вернут 1

Читать дальше →

Заметки об архитектуре или Интерпретатор Forth на PHP 5.3

Время на прочтение7 мин
Охват и читатели4.2K

О чем пойдет речь?


Мне очень часто приходится проводить собеседования, нанимая на работу PHP-программистов. 2-3 человека в день — это вполне нормально, хотя и на грани выносливости.

Все кандидаты разные, кто-то просто великолепен, кто-то похуже. Но у тех, кто похуже, всегда одни и те же ошибки.

Во-первых они совершенно не интересуются развитием языка, на котором пишут, и вопрос «А что нового в PHP 5.3» ставит их в тупик, а уж предложение порассуждать на тему «Чтобы Вы добавили в будущие версии языка» — просто пугает.

Во-вторых они категорически не представляют, что PHP может быть хоть чем-то кроме «скриптов для сайтов». Особенно печально это в свете того, что на работе им придется заниматься далеко не сайтами и даже скорее всего не сайтами.

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

Таким кандидатам и посвящается этот топик. С уважением к их нелегкой доле (а быть программистом на самом деле непросто) и с надеждой, что он подтолкнет их вперед по пути самосовершенствования.

Что мы будем делать?

Давайте попробуем сделать интерпретатор Форта на PHP!

Форт меня всегда манил, как далекая галактика из антиматерии. Стек, слова в словаре, обратная польская нотация… Это только кажется сложным, но на самом деле очень просто, зато здорово «просветляет» и расширяет кругозор.

Давайте сделаем наше приложение консольным, никаких браузеров и серверов. Давайте писать его на PHP 5.3, стараясь использовать язык на 100%. И, конечно же, попробуем изначально сделать так, чтобы пришедшие после нас не повесились от нашего кода в первый же день.
Читать дальше →

Мой взгляд на деревья в PHP

Время на прочтение5 мин
Охват и читатели8.3K
Привет, собственно, этот пост я решил написать в ответ воот на это сообщение из песочницы.
Я не считаю себя профи в программировании, хотя иногда очень хочется, но все-же, я считаю, что неправильно таким способом строить деревья).
Я Буду строить не дерево комментариев, а дерево меню. Мой способ построения меню легко модифицировать и для построения дерева комментариев. Меню может иметь любое количество вложенных подменю. Моя структура таблицы меню такая:
Читать дальше →

Автоматическая фильтрация комментариев в Livejournal при помощи XML-RPC

Время на прочтение3 мин
Охват и читатели2.8K
В этой статье я расскажу о том, как при помощи XML-RPC получать информацию о комментариях к своим постам в ЖЖ, и даже немножечко их удалять.

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

Oбучающий пакет PHP on Windows and SQL Server Training Kit

Время на прочтение1 мин
Охват и читатели807
Microsoft обновила обучающий пакет для PHP-разработчиков, которые размещают свои сайты на серверах Microsoft IIS и SQL Server.

Данный пакет содержит следующие лабораторные работы:
  • IIS 7.5 Access Control Features for PHP;
  • Обновлено: Using IIS 7.5 Media Features in a PHP Application (содержит новое упражнение по технологии Smooth Streaming);
  • Troubleshooting PHP;
  • Migrating PHP Applications to IIS 7.5;
  • Introduction to Using SQL Server with PHP;
  • Using SQL Server Full-text Search and FILESTREAM Storage with PHP;
  • Новая: Getting Started with SQL Server Migration Assistant for MySQL;
и следующие демонстрации: Spatial Demo и SQL Server Reporting Services Demo.

Загрузить обучающий пакет PHP on Windows and SQL Server Training Kit (с февральским обновлением)  можно по следующей ссылке.

PHP на вершине списка в категории «Работа» на Freelancer.com за 2010 год

Время на прочтение4 мин
Охват и читатели1.7K

Статья с www.computer.org, интересная статистика востребованности технологий в проектах опубликованных на Freelancer.com.

Читать дальше →