Все записи с тегом "php"

Установка и настройка XDebug на Linux (Ubuntu 10.04)

Если вы программируете не первый день, то наверняка слышали про xdebug, средство отладки для PHP. Его использование изрядно упрощает жизнь, помогает быстрее отыскивать баги и соответственно их устранять. Помимо отладки, это расширение позволяет производить профилирование, трассировку, подсчет покрытия кода, а также делать красивый форматированный вывод исключений и [vardump](http://php.net/vardump) =)

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

Вышел NetBeans 7 Beta 2

Вышла вторая бета версия замечательной IDE. Обо всех внесенных изменениях вы можете почитать на официальном сайте http://netbeans.org/community/releases/70/relnotes.html

Что важного появилось для PHP разработчика:

  • Поддержка git 1.7.x
  • Поддержка HTML 5
  • Рефакторинг названий переменных, функций, методов, классов и интерфейсов
  • Улучшен механизм определения внешних изменений (родное (нативное) прослушивание файловой системы)
  • Улучшена работа с базами данных Oracle

Рефакторинг имен работает просто замечательно. Если в функции поставить курсор на какую-либо переменную, дождаться когда ide подсветит эту переменную, а затем нажать CTRL+R, то случится локальная магия =)

Встроенная поддержка git на порядок лучше плагина nbgit: работает быстрее, показывает текущую ветку, позволяет довольно удобно делать чекауты

Качаем, наслаждаемся http://dlc.sun.com.edgesuite.net/netbeans/7.0/beta2/

PS: если у вас после обновления интерфейс стал русским, и вам это не нравится, добавьте в ярлык параметр --locale en, чтобы получилось примерно так:

Netbeans

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

Встроенный Web сервер в PHP

Вчера в rfc попало предложение встроить в интерпретатор PHP собственный WEB сервер, что позволило бы сделать php скрипты более удобными для использования на системах без установленного веб-сервера. Запускать такой сервер предлагают из командной строки:

php -S localhost:8000 docroot

а в качестве замены к mod_rewrite использовать:

if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
    return false; // отдаем файл как есть
else
    ...

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

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

Вышел PHP 5.4a1

Команда разработчиков проанонсировали новую версию PHP, которая включает в себя несколько новых фич и удаление устаревших.

Список изменений:

  • Добавлены Traits
  • Array dereferencing support
  • Добавлена поддержка DTrace
  • Улучшена производительность и оптимизирована потребляемая память Zend Engine
  • Расширение sqllite перенесено в PECL

Были удалены

  • синтаксис break/continue $var
  • ini директивы register_globals, allow_call_time_pass_reference и register_long_arrays
  • session_is_regisitered(), session_registered() и session_unregister()

Следующая альфа версия должна появится в течении 4 недель.

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

Введение в Traits

Traits - это механизм повторного использования кода. Был разработан как альтернатива подмешиванию (mixin) и, в некотором роде, множественному наследованию, так как позволяет разработчику более свободно повторно использовать методы объявленные в иной иерархии классов. Семантика комбинирования traits и классов специально разработана для избежания типичных проблем связанных с множественным наследованием и технологией mixin. На момент написания статьи, данная технология находиться в trunk и будет включена в новые сборки dev версии PHP 6 (также возможно и в 5.3.x)

Пример использования

trait Speaker {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class Base {
    use Speaker;
}

$test = new Base();
$test -> sayHello();
Читать дальше

Composer - менеджер зависимостей для php

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

Но случилось чудо и на свет появился composer. Устанавливается он до безобразия просто:

curl -sS https://getcomposer.org/installer | php

Если же вы пользователь PHPStorm, то можете сделать tools -> init composer

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

Как закрыть соединение и продолжить выполнение скрипта

Порой перед разработчиком встает задача проделать действительно долгую операцию после отображения страницы, как например рассылка почтовых сообщений или обмен данными с удаленным сервером. Можно положить эту задачу на плечи крона, но если это не удобно/медленно/кошерно, приходится выкручиваться и изобретать странные решения. Одним из таких решений является выполнение долгой операции непосредственно после рендеринга страницы, что может подвесить соединение на пару (десятков, сотен) секунд, или, если поступить добросовестно и оборвать соединение, пройдет незаметно для пользователя. Об этом методе сегодня и поговорим.

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

Введение в MongoDB

Не реляционные базы данных все больше набирают популярность, и все чаще их можно встретить в проектах с высокой нагрузкой, как решения для увеличение производительности. В этой статье я попытаюсь раскрыть основы работы с MongoDB через расширение pear в php. О том как установить эту базу данных и настроить к ней доступ, вы можете прочитать здесь.

Установление соединения

После установки расширения pear, в своем проекте мы можете использовать ряд новых классов, таких как Mongo, MongoDB, MongoCollection, MongoCursor и прочие

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

Установка MongoDB на Ubuntu 10.04 и связывание с PHP

MongoDB - это документная база данных, написанная на c++. Для обмена данными с клиентом использует JSON, а хранит в двоичном формате BSON. По методу обмена данными эта база данных относится к NoSQL, т.е. использует не классический метод для взаимодействия реляционных баз данных и клиента (без SQL).

Для установки в Ubuntu достаточно прописать в консоле:

sudo apt-get install mongo

По окончании установки, для проверки работоспособности, выполните в консоле:

mongo

Вы должны увидеть примерно следующее приветствие:

MongoDB shell version: 1.2.2
type "exit" to exit
type "help" for help
Читать дальше

Внутреннее устройство переменных PHP

PHP

Самой важной частью любого языка программирования является возможность сохранения и получения произвольных данных, а именно реализация переменных. В этой статье я постараюсь приоткрыть занавес и показать, как в PHP реализована слабая типизация, как происходит приведение типов и.. в общем поговорим о переменных =)  

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

Установка Redis на CentOS 5,6 и Ubuntu

Во время отладки и оптимизации зачастую встает вопрос грамотного профилирования запросов в базу данных, вывод отладочной информации и просто логирования. В таких случаях крайне полезным может оказаться FirePHP, дополнение к небезызвестному FireBug. К счастью разработчики zend позаботились об этом, и нам не надо изобретать велосипед или подставлять костыли для этого. Достаточно использовать расширения стандартных классов логирования и профилирования.

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

Паттерн проектирования Builder (Строитель) на PHP

Builder

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.

Builder (Строитель) относится к классу порождающих паттернов. Он используется для отделения процесса конструирования сложного объекта от его представления, так что в результате одного и того же конструирования могут получаться различные объекты.

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

Паттерн проектирования Bridge (Мост) на PHP

Bridge

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.

Bridge (Мост) относиться к классу структурных паттернов. Он используется для отделения абстракции от ее реализации так, чтобы то и другое можно было изменять независимо.

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

Паттерн проектирования Приспособленец (Flyweight) на PHP

Flyweight

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.

Приспособленец (Flyweight) относиться к классу структурных паттернов. Он используется для эффективной поддержки множества мелких объектов.

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

Паттерн проектирования Прокси (Proxy) на PHP

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.

Прокси (Proxy, Заместитель) относиться к классу структурных паттернов. Является суррогатом другого объекта и контролирует доступ к нему.

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

Паттерн проектирования Фасад (Facade) на PHP

Facade

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.

Facade (Фасад) относиться к классу структурных паттернов. Представляет собой унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Паттерн фасад определяет интерфейс более высокого уровня, который упрощает использование подсистем.

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