Обновить
128K+

PHP *

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

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

Пишем модуль uLogin для Kohana 3.2

Время на прочтение6 мин
Охват и читатели8.9K
Не так давно на Хабре была статья про виджет авторизации uLogin.
Что мне в нём очень понравилось, это возможность указать обязательные поля, при этом, в случае их неполучения от провайдера, пользователю предлагается врчуную их заполнить. Так возникло желания написать модуль в Kohana, который позволял бы легко осуществлять регистрацию пользователя с помощью виджета uLogin.

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

PHP: Расширенный текучий интерфейс

Время на прочтение5 мин
Охват и читатели3.9K
Уверен, что многим из вас, кто читает этот текст, знакомо понятие Текучий интерфейс. И даже если вы про него не слышали, уверен, что вы им пользовались и не раз. Это действительно удобно. Так о чем же идет речь?

<?php 

class Images {
	
	public $width;
	
	public $height;
	
	public function SetWidth($value) {
		$this->width = $with;
		return $this;
	}
	
	public function SetHeight($value) {
		$this->height = $value;
		return $this;
	}
	
}

$images = new Images();
$images->SetWidth(100)->SetHeight(100);

?>


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

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

IoC на PHP

Время на прочтение2 мин
Охват и читатели16K
Inversion of Control (IoC) контейнеры — это удобный способ организации внедрения зависимости получивший широкое применение в мире Java.

Данная библиотека позволяет использовать IoC контейнеры в PHP.

Как?

PHP и Аспектно-ориентированное программирование

Время на прочтение4 мин
Охват и читатели8.6K
Довольно популярная в мире Java парадигма аспектно-ориентированного программирования (АОП) почему-то слабо освещена в разработке на PHP. В данной статье я хочу представить свой подход к написанию АОП приложений с использованием небольшого фреймворка и модуля.
Читать дальше →

RedBeanPHP — еще одна ORM библиотека

Время на прочтение3 мин
Охват и читатели33K
RedBeanPHP logo
На хабре нашел пару упоминаний про эту ORM, да и то давно и в комментариях. Недавно обнаружил, что вышла уже вторая версия. Желающим — вот ссылка на загрузку (GitHub) и на документацию
Цель этой статьи — кратко познакомить читателей с этой ORM-библиотекой.
RedBeanPHP — еще одна ORM-библиотека. Основное ее отличие от коллег, типа Propel или Doctrine, в отсутствии необходимости ручного конфигурирования объектов. Т.е. никаких xml, yml или ini-файлов. RedBenPHP на лету создает таблицы, поля и индексы. Любой объект можно связать с другим. Из БД поддерживаются MySQL, SQLite и Postgres.
Читать дальше →

Защита от спама в phpBB 3 без капчи

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

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

JetBrains снова радует скидками

Время на прочтение1 мин
Охват и читатели2.6K
JetBrains по доброй традиции снижает цены на некоторые свои продукты и предоставляет 50% скидку на PHP IDE PhpStorm. Кто давно хотел, но сомневался из-за цены — хороший повод порадоваться.

Спасибо пользователю yul за наводку: на RubyMine действует точно такая же скидка, что может быть весьма интересно разработчикам на RoR.

Расширение PHP для асинхронного ввода-вывода POSIX

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

Бэкграунд



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

Речь идёт о расширении PECL eio, предоставляющем интерфейс к библиотеке libeio.

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

Traits в php 5.4. Разбираем детали реализации

Время на прочтение8 мин
Охват и читатели54K
Совсем недавно вышла первая beta php 5.4, а пока я писал топик подоспела и вторая. Одно из нововведений в 5.4 – это traits (типажи). Предлагаю разобраться во всех деталях в том, что же типажи из себя представляют в php.

Простой пример типажа, чтобы не заглядывать в Википедею:
//определение типажа
trait Pprint 
{
    public function whoAmI()
    {
        return get_class($this) . ': ' . (string) $this;
    }
}

class Human 
{
    use Pprint; //подключаем типаж, ключевое слово use

    protected $_name = 'unknown';
    
    public function __construct($name)
    {
        $this->_name = $name;
    }

    public function __toString()
    {
        return (string) $this->_name;
    }   
}

$a = new Human('Nikita');
echo $a->whoAmI(), PHP_EOL; //=> Human: Nikita

Как видно, к классу Human было добавлено поведение из типажа Pprint.

Но во всём есть свои детали.
О них далее

Интерполяция: рисуем гладкие графики средствами PHP и GD

Время на прочтение6 мин
Охват и читатели61K
Распространенной задачей для программиста является рисование графиков. Входными данными является массив точек (xi;yi). Как правило, мы знаем только некоторые значения — в определенных точках графика. Чтобы построить непрерывный график кривой необходимо прибегнуть к интерполяции или аппроксимации.



Интерполяция — построение кривой, проходящей через заданные точки.
Аппроксимация — приближение кривой к исходной, но не обязательно проходящей через заданные точки.

В этом топике я хочу продемонстрировать свою библиотеку для PHP, которая производит интерполяцию с помощью многочлена Лагранжа, C-сплайна и сплайна Акимы, а также аппроксимацию кривой Безье. Дополнительно в ней реализована отрисовка отрезка со сглаживанием (антиалиасингом).

Кратко рассмотрим методы интерполяция и аппроксимации.
Читать дальше →

CodeSniffer и PhpEd

Время на прочтение2 мин
Охват и читатели8.3K
На хабре уже ни раз встречалось описание интструмента PHP_CodeSniffer, который используется для проверки соответствия написанного кода стандартам кодирования. Инструмент очень удобный и полезный, думаю, спорить никто не станет. В интернете есть статьи, которые описывают как интергрировать его с системой контроля версий, чтобы осуществлять проверку перед очередным коммитом, но мне захотелось прикрутить его к своей IDE, чтобы проверять код во время его написания.

Исторически сложилось, что в работе я использую IDE от Nusphere – PhpEd. PhpEd позволяет подключать к себе скрипты на php, которые могут выполнять произвольные операции над кодом в редакторе. Скрипт также может запустить внешнюю программу и вернуть данные со стандартного потока вывода непосредственно в редактор кода.
Читать дальше →

Исключение != ошибка

Время на прочтение4 мин
Охват и читатели31K
Многие программисты почему-то считают, что исключения и ошибки — это одно и то же. Кто-то постоянно кидает exception, кто-то через errorHandler превращает ошибки в исключения. Некоторые пытаются увеличить производительность, используя исключения. Но, на самом деле, exception и ошибки — это совершенно разные механизмы. Не надо одним механизмом заменять другой. Они созданы для разных целей.

Когда появился php5 с исключениями, а затем ZendFramework, который всегда кидает исключения — я не мог понять: чем же exception лучше моего любимого trigger_error()? Долго думал, обсуждал с коллегами и разобрался в этом вопросе. Теперь я чётко знаю, где использовать trigger_error(), а где throw new Exception().

В чём же принципиальная разница между ними?

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

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

GTK+ приложение на PHP

Время на прочтение4 мин
Охват и читатели7K
image
Многим трудно поверить, но на PHP можно писать не только говнокод и скрипты, но и небольшие GUI приложения. Небольшие, потому что тема не очень популярна и слабо освещена в силу того, что существуют более удобные и мощные средства для разработки, соответсвенно инструментарий довольно сырой. Хотя для написания приложений «для себя» или же курсовых\дипломных вполне подойдет.
В статье приводится пример создания простого GTK+ приложения на PHP.
Читать дальше →

Некоторые функции, которые я использую в своих проектах

Время на прочтение4 мин
Охват и читатели3K
Доброго времени суток, Под катом предлагаю Вам ознакомиться с функциями на PHP, которые я использую в большинстве своих проектов. В статье мы получим погоду для любого города мира при помощи Google, получим Whois и favicon домена, количество ретвитов определенной страницы и сделаем генератор ссылок на профили в твиттере, сделаем скриншот сайта, соберем css в 1 файл как у яндекса, распакуем zip и преобразуем картинку в ASCII-код.
Прошу под кат

phpBBex — расширенная версия phpBB 3

Время на прочтение6 мин
Охват и читатели17K
phpBBex logophpBB 3 — популярный бесплатный форум. Первая версия вышла в свет в 2000 году, и с тех пор вокруг этого движка сформировалось огромное сообщество. Не глядя на серьёзные архитектурные недостатки третьей ветки, которые остались в наследие от предыдущих версий, данный движок по праву считается одним из самых мощных решений среди бесплатных форумов. Огромное количество модов, написанных сообществом, только способствуют этому.
Как правило, мало кого устраивает стандартная функциональность phpBB 3, и каждый владелец форума устанавливает несколько модов, либо использует готовые сборки, которые включают наиболее популярные модификации. Однако, не все моды реализованы достаточно хорошо. Что-то было написано для старых версий форума, и не было обновлено, из-за чего в новых версиях форума возникают какие-то проблемы.
Несколько лет назад для форума родного города я создал форк с именем phpBBex, где постарался сделать phpBB 3 таким, каким вижу его я. Большинство проделанных изменений не существует в виде модов. Практически все установленные моды были сильно переработаны: исправлены ошибки, код адаптирован под последние версии phpBB. Недавно проект был переведён на Mercurial, в результате чего поддержка форка значительно упростилась. Надеюсь, что кто-то найдёт этот проект полезным.
Читать дальше →

PHP под С-шным дебаггером: копаемся внутри Zend Engine

Время на прочтение6 мин
Охват и читатели5.3K
Как-то пришлось мне столкнуться с проблемой: веб-краулер на PHP работает себе нормально, работает, а потом вдруг (через 3-6 часов работы) перестает что-либо делать и начинает кушать 100% CPU. Как искать такую проблему? Как узнать, где он зацикливается? А что если подключиться к PHP сишным дебаггером и узнать оттуда все, что необходимо? Подробности под катом.
Читать дальше →

NetBeans 7.1 beta — новое для PHP разработчика

Время на прочтение1 мин
Охват и читатели1.9K
Вышел NetBeans 7.1 beta — полный список изменений и улучшений.
Я остановлюсь на наиболее важных изменениях, как мне кажется, касающихся PHP и связанных с веб-разработкой.
Читать дальше →

Smarty vs. Twig: производительность

Время на прочтение4 мин
Охват и читатели32K
Smarty — один из самых старых шаблонизаторов для PHP. Если вы программируете на PHP — скорее всего, вам приходилось работать с ним. В 2010 году вышла третья версия этого шаблонизатора. Smarty 3 был написан с чистого листа, с активным использованием PHP5. Вместе с этим Smarty получил обновлённый синтаксис и современные возможности, включая наследование, песочницу и др.
Twig — молодой шаблонизатор от разработчиков Symfony. Авторы позиционируют его как быстрый и функциональный шаблонизатор. По возможностям он во многом похож на Smarty 3. Twig отличает несколько другой синтаксис, а так же заявленная высокая производительность. Проверим?
Читать дальше →

Тестирование торговой системы на PHP

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

Вступление



Наверное каждый, кто сталкивался с торговлей акциями, валютами или каким-либо другим биржевым инструментом часто встречал совет о необходимости построения и тестирования своей торговой системы.

Торговля по системе мне показалась единственно верным способом работы на бирже, и я решил воспользоваться советом и протестировать свою торговую стратегию.



Узнать, будет ли торговый робот приносить прибыль