Новый установщик Symfony: самый быстрый способ начать работу с Symfony

  • PHP
  • 2 года назад

Совсем недавно команда Symfony презентовала установщик для своего фреймворка. Основная задача которого - упростить процесс установки Symfony.

До настоящего времени установка Symfony подразумевала несколько шагов:

Установщик сделает все это за один шаг. Он загружает архивированный файл, содержащий исходный код и вендоров, таким образом вам не придется выполнять дополнительных действий при установке Symfony.

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

Чего ожидать от PHP7. Часть 1

  • PHP
  • 2 года назад

Совершено независимо от того как вы относитесь к PHP 7, он будет выпущен в этом году. Рабочее предложение по PHP 7 прошло практически единогласно (32 к 2). Теперь набор функций уже зафиксирован и мы увидим первый релиз уже в середине июня.

Но что это значит для конечного пользователя? Все мы видели с каким нежеланием веб хостинги переходили на PHP 5.х. Сколько мы увидим новых проблем связанных с обратной совместимостью и насколько это замедлит переход на последнюю версию?

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

Повышение безопасности и упрощение разработки в Symfony2 при помощи аннотаций и фильтров Доктрины

  • PHP
  • 2 года назад

Как вы и сами прекрасно понимаете, пользователь должен видеть только свои заказы, свои сообщения и так далее, и ни в коем случае не чужие. Но, конечно, иногда пропустив условие выборки данных, например, забыв указать WHERE в ParamConverter, мы нарушаем это правило.

Я покажу вам как можно легко избавиться от подобного рода проблем не только на определенных запросах и таблицах, а в пределах всего Symfony приложения. И в этом нам помогут аннотации и фильтры Доктрины.

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

Подготовка к Zend сертификации : Строки и и регулярные выражения

  • PHP
  • 2 года назад
  • 3/3
  • выделяются одинарными или двойными кавычками
  • двойные кавычки применяются в случае парсинга переменных или использования специальных символов (\n). На скорость обработки данных не влияет
  • strlen($string) - возвращает длину строки, а именно количество байт, а не символов
  • str_word_count($string, $format, $charlist) - возвращает количество слов, $format (0 - возврат количества слов, 1 - массив из всех слов, 2 - ассоциативный массив, где в качестве ключей - положение в строке (индекс)), $charlist - список символов, из которых может состоять слово (то есть 3 - слово fri3nd будет посчитано).
  • count_chars($string, 1) - считает количество вхождений символов, 1 - режим, возвращает массив со всеми символами (0 - возвращает символы, не входящие в строку).
  • soundex($string) // высчитывает soundex ключ строки (строка длинной в 4 символа, начинающаяся с буквы), для поиска по произношению, например, soundex(“Euler”) == soundex(“Ellery”); // E460
  • metaphone($string, $phonemes) - высчитывает metaphone ключ для строки (является более точным сравнением чем soundex(), так как в ней учитываются правила произношения в английском языке, сгенерированные ключи разной длины), $phonemes ограничивает список возвращаемых символов.
  • trim($string, $optional_char_list) - убирает пробелы из начала и окончания строки (space/tab/newline); если задан $optional_char_list, то указанные символы так же удаляются.
  • ltrim($string, $optional_char_list) - удаляет пробелы из начала строки.
  • rtrim($string, $optional_char_list) - аналог chop(), удаляет пробелы с конца строки.
Читать далее...

Как базовые шаблоны помогают понять принцип работы контроллеров

  • PHP
  • 2 года назад

Пол М. Джонс однажды завёл интересное обсуждение на тему применения шаблона MVC в веб, основные моменты которой он описал в статье Action-Domain-Responder. Предлагаю вам познакомиться с ней, после чего вы всегда сможете вернуться и прочитать эту статью.

Хочу отметить, что я почти полностью разделяю мнение автора и, более того, я смог даже внести свою лепту при общении с Полом. Но всегда оставался один момент, на счет которого я имел свою точку зрения, и, наконец, я собрался с мыслями и решил изложить её. Контроллеры - действия в ADR - можно описать при помощи шаблона проектирования фасад.

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

Обзор компонентов Symfony2 : Применение преобразователя данных

  • PHP
  • 2 года назад
  • 5/6

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

Допустим вы используете связь один к одному между сущностями Task (задача) и Issue (проблема), т.е. задача может иметь проблему, а может и не иметь. Если вы просто добавите выпадающий список с полным набором возможных проблем, то отыскать в нем нужную вам будет практически невозможно. А можете создать текстовое поле, в которое пользователь будет вводить номер проблемы.

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

Подготовка к Zend сертификации : Функции

  • PHP
  • 2 года назад
  • 2/3
  • Функция может содержать в себе любой корректный PHP код, включая другие функции и классы.
  • Функция не обязательно должна быть определена до вызова, за исключением её использования в условных операторах.
  • Объявленную функцию нельзя переопределить.
  • В PHP все функции и классы имеют глобальную область видимости - их допускается вызывать даже за пределами функции в случае, когда они были заданы внутри этой функции и наоборот.
  • имена функций не чувствительны к регистру
  • типы: встроенные, определенные пользователем, сторонние (например из расширений).
  • global $id; или $GLOBALS["id"] используются для доступа к глобальным переменным (по сути global $id это ссылка на $var = & $GLOBALS["id"]).
  • В PHP5 появилась возможность задать значение параметра функции по-умолчанию даже для параметров, передаваемых по ссылке (если параметр не был передан, то создается новая переменная).
  • В PHP5 объекты всегда передаются по ссылке, если только они не были клонированы.
  • допускается рекурсивный вызов функций (то есть function recursion($a) { if($a<10){recursion($a+1);} }), следите за тем, чтобы выполнение функций было ограниченно.
  • чтобы проверить существует ли функции в контексте используйте function_exists($function_name).
  • $arr = get_defined_functions() - даст вам полный список всех функций, $arr['user'] - функции заданные пользователем.
Читать далее...

Подготовка к Zend сертификации : Основы PHP

  • PHP
  • 2 года назад
  • 1/3

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

<?php
... code
?>

Тем не менее в начале страницы может присутствовать только один открывающий тег <?php. Короткие теги возможно отключить (как правило из-за совместимости с XML) установив директиву short_open_tag в файле php.ini:

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