Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

PHP 5.4 alpha1

PHP *
Это альфа-релиз для подталкивания пользователей к выявлению ошибок, а также для обеспечения, что все новые возможности и нарушения обратной совместимости оценены и документированы до финального выпуска PHP 5.4.0. Пожалуйста, сообщите о результатах в список рассылки QA (php-qa@lists.php.net) и/или в баг-трекер PHP. Бинарники для Windows можно скачать с сайта Windows QA.

Не используйте его на боевых серверах!

Неполный список изменений:
  • Добавлены Traits
  • Добавлено Array dereferencing
  • Добавлена поддержка DTrace
  • Улучшено использование памяти и производительность Zend Engine
  • Расширение sqlite перемещено в PECL (sqlite3 оставлен)

Обратите внимание, что некоторые существующие возможности были удалены:
  • синтаксис break/continue $var
  • ini директивы register_globals, allow_call_time_pass_reference и register_long_arrays
  • session_is_regisitered(), session_registered() и session_unregister()

Это первый релиз, который следует процессу выпуска RFC. Следующая альфа будет выпущена в течение четырех недель. Набор возможностей и API PHP 5.4 не окончательны.

Полный список изменений можно посмотреть в фале NEWS.

Читать дальше →
Всего голосов 57: ↑54 и ↓3 +51
Просмотры 1.1K
Комментарии 116

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

PHP *
Tutorial
Совсем недавно вышла первая 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.

Но во всём есть свои детали.
О них далее
Всего голосов 163: ↑155 и ↓8 +147
Просмотры 50K
Комментарии 102

Улучшения в htmlspecialchars() в версии 5.4

PHP *
Перевод
Вокруг новых фич в PHP 5.4 было много разговоров, как например про traits, короткий синтаксис массивов.

Но одни особенно важные изменения, которые часто забывают для PHP 5.4, героически переписал cataphract (Artefacto на StackOverflow) большую часть htmlspecialchars.

Изменения о которых идет речь, относятся не только к htmlspecialchars, но еще и к htmlentities, htmlspecialchars_decode, html_entity_decode, get_html_translation_table.

Вот краткий обзор наиболее важных изменений:
  • UTF-8 кодировка по-умолчанию
  • Улучшенная обработка ошибок (ENT_SUBSTITUTE)
  • Обработка Doctype (ENT_HTML401, …)


Читать дальше →
Всего голосов 80: ↑73 и ↓7 +66
Просмотры 21K
Комментарии 30

Наконец-то вышел php 5.4

PHP *
Всем привет. Сегодня вышел долгожданный релиз php5.4. Кто еще не в курсе, этот релиз включает в себя много новых возможностей и фиксов. Среди нового стоит отметить:

Для пользователей php 5.3 руководство по миграции доступно здесь. Полный список изменений доступен здесь.

Релиз еще не успел попасть на все зеркала, так что качайте на оф. сайте.

P.S.: Документация на русском уже доступна, хотя и не полностью. Обновил ссылки на русскоязычные варианты.
Всего голосов 90: ↑71 и ↓19 +52
Просмотры 5K
Комментарии 71

Doctrine ORM behaviors, или как эффективно использовать трейты

PHP *Symfony *Doctrine ORM *
С момента релиза php 5.4 уже прошло некоторое время, и мы решили поэкспериментировать с трейтами (traits), оценить их практическое применение. Как их можно использовать вместе с объектами Doctrine2?

Трейты


Трейты в php — это набор свойств и методов, которые можно добавить в класс.
Они реализованы на уровне интерпретатора и являются абсолютно прозрачными для Doctrine.

Трейты спроектированы для горизонтального повторного использования и идеально подходят для добавления общего поведения в несколько объектов.
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 6.6K
Комментарии 17

Недокументированные изменения или PHP 5.4 и перегрузка функций

PHP *Программирование *
Recovery mode
Как это было

Не так давно столкнулся с одной проблемой, возникшей при переезде на php 5.4. Задача состояла в тестировании функционала, который использовал родные функции. К слову, Fumocker отлично справляется с этой задачей, позволяя в тестах переопределять встроенные функции. Я написал пачку тестов и запустил их локально. Все тесты прошли успешно. Отлично! Задача была сделана и я был в полном счастье, пока не добавил проект в travis-ci. И? Сборка была сломана под php 5.4, когда под 5.3 всё светилось зелёным.

Именно этот факт навел меня на мысль, что между 5.3 и 5.4 должна быть разница в перегрузке функций.
Читать дальше →
Всего голосов 44: ↑40 и ↓4 +36
Просмотры 13K
Комментарии 10

Использование преимуществ встроенного PHP сервера

PHP *
Перевод
Tutorial
Одним из крутейший новшеств в php 5.4 является встроенный сервер, созданный специально для разработки и тестирования. Теперь вы можете писать и тестировать свой код не имея полноценного веб-сервера — просто запустите встроенный сервер, протестируйте свой код, и выключите его, когда закончите.
Сервер, так же, предоставляет возможность и для творческого использования. Например, вы можете распространять портативное web-приложение на CD или USB, или даже как десктопное приложение, созданное на PHP без использования GTK или других графических библиотек.
Читать дальше →
Всего голосов 51: ↑45 и ↓6 +39
Просмотры 38K
Комментарии 24

Реализация шаблона проектирования Singleton на PHP 5.4

PHP *
Recovery mode
Из песочницы
Казалось бы, из всех шаблонов проектирования что может быть проще всем известного синглетона. Во многих классических примерах реализации на разных языках программирования она может занимать всего пару десятков строк а того и меньше.

image Так получилось, что я реализую этот шаблон вот уже второй год начиная с первого выхода PHP 5.3 в 2009 году. В то время у его предшественника версии 5.2 не было позднего статического связывания и для создания экземпляра класса в метод приходилось передавать его имя, что казалось мне архинеудобным.

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

Подробности реализации ниже.
Читать дальше →
Всего голосов 44: ↑16 и ↓28 -12
Просмотры 8.7K
Комментарии 57

Типажи и анонимные функции в PHP. Кря-кря!

PHP *
Tutorial
В данной статье я не буду рассказывать, что такое Типажи, не буду описывать синтаксис, или разбирать всякие тонкости, связанные с разрешением имен и наследованием Типажей. На эту тему на Хабре уже есть фундаментальная статья.
Я хочу лишь показать один маленький, но гордый пример использования типажей совместно с анонимными функциями. В нем не будет ничего технически сложного: всего один типаж и два класса. Практической ценности в нем тоже не очень много, как и в любом модельном примере. Но идея — каким образом можно структурировать и переиспользовать код — на мой взгляд очень ценна.
Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 74: ↑63 и ↓11 +52
Просмотры 27K
Комментарии 51

Статистика использования баз данных, серверов, версий Java и PHP в облаке

Блог компании Jelastic PHP *Java *
Всем привет! По многочисленным просьбам наших пользователей и читателей выкладываем статистические данные по использованию баз данных, серверов приложений, а также версий Java и PHP в облаке Jelastic. Данные собирались довольно простым образом: мы просто подсчитали количество наших пользователей, которые использовали тот или иной программный стек при создании окружений на платформе Jelastic за прошлый месяц (все тестовые аккаунты, конечно же, исключили). Также в данной статье можно отследить тренды за последний год для баз данных и всего, что касается Java, и за последние 5 месяцев для серверов приложений и версий PHP (так как поддержка PHP была реализована в конце января этого года).

Базы данных

Как видим, победитель среди баз данных вполне предсказуем – это MySQL (65%). С большим отрывом второе место занимает «сестра» MySQL – MariaDB, которую используют 12% наших пользователей. Тройку лидеров замыкают Postgres и Mongo – по 11% у каждой. Ну, и аутсайдер, нашего состязания — CouchDB, которая набрала всего один процент.

Database market share June 2013
Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Просмотры 15K
Комментарии 22