Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # Анатолий Скорняков Мечтатель, путешественник, программист 👨‍💻 🌏 ✈️ 📷 ## Sitemaps - [XML Sitemap](https://fritool.ru/sitemap.xml): Contains all public & indexable URLs for this website. ## Записи - [Подготовка ваших приложений и пакетов для Symfony 6](https://fritool.ru/preparing-your-apps-and-bundles-for-symfony-6/) - Согласно Symfony Release Process, каждые два года Symfony выпускает последнюю версию ветки (X.4) и первую версию следующей ветки (Y.0) одновременно. Это произойдет в конце Ноября 2021 года, когда будут выпущены и Symfony 5.4, и Symfony 6.0. Основное различие между ними заключается в том, что Symfony 5.4 по-прежнему будет содержать все устаревшие функции, и вы можете - [Новое в Symfony 5.3: Прекращение поддержки компонентов Guard](https://fritool.ru/new-in-symfony-5-3-guard-component-deprecation/) - В Symfony 5.1 представили новую систему аутентификации безопасности в качестве экспериментальной функции. Спустя двенадцать месяцев после его внедрения и после того, как многие разработчики протестировали его в реальных приложениях, достаточно уверены, чтобы отметить его как стабильный и рекомендовать использовать его во всех приложениях Symfony. Вот почему приняли решение отказаться от старого механизма аутентификации, а также - [Новое в Symfony 5.3: Runtime компонент](https://fritool.ru/new-in-symfony-5-3-runtime-component/) - Symfony 5.3 был выпущен 31 мая 2021 года. Хотя было опубликовано много статей о новых функциях Symfony 5.3, есть некоторые интересные новые функции, которые еще не обсуждали. Первый - это новый компонент среды выполнения. Назначение компонента Runtime - абстрагировать большую часть логики начальной загрузки приложения в так называемые среды выполнения, что позволяет вам писать общие - [Новое в Symfony 5.3: Поставщики переводов](https://fritool.ru/new-in-symfony-5-3-translation-providers/) - Процесс перевода приложений Symfony требует извлечения всего переводимого содержимого из шаблонов и кода. Эта задача скучна и подвержена ошибкам; вот почему Symfony предоставляет команду translation:update для автоматического извлечения содержимого и обновления каталогов. Это отлично работает, если ваше приложение не использует внешние службы перевода с собственными локальными средствами перевода или средствами перевода на основе SaaS. Затем - [Новое в Symfony 5.3: Сортировка полей формы](https://fritool.ru/new-in-symfony-5-3-form-field-sorting/) - Формы Symfony отображают свои поля в том же порядке, в котором вы их определяете. Это может вызвать проблемы при динамическом добавлении/удалении полей в сложных формах (например, поле, добавленное через события формы, может в конечном итоге отображаться после кнопки отправки формы). Вот почему в Symfony 5.3 теперь можно сортировать поля формы, чтобы контролировать порядок, в котором - [Новое в Symfony 5.3: Автоконфигурация сервиса и атрибуты](https://fritool.ru/new-in-symfony-5-3-service-sutoconfiguration-and-attributes/) - Автоконфигурация службы с использованием атрибутов Автоконфигурация служб позволяет автоматически применять определенную конфигурацию к вашим службам в зависимости от класса службы. Это полезно, например, для применения определенного тега службы к классам, реализующим некоторый интерфейс (например, когда вы создаете класс, реализующий Twig\Extension\AbstractExtension, Symfony применяет к нему тег twig.extension, чтобы вы могли использовать его без его настройки). Атрибуты - [Новое в Symfony 5.3: Улучшения логирования](https://fritool.ru/new-in-symfony-5-3-logging-improvements/) - Сброс логгера в воркерах Messenger Одним из наиболее важных элементов компонента Messenger являются воркеры, которые обрабатывают сообщения. В Symfony 4.4 улучшили воркеры процессы для автоматической очистки диспетчера сущностей Doctrine после обработки (или сбоя) каждого сообщения, чтобы избежать проблем с устаревшими сущностями. В Symfony 5.3 снова улучшили воркеры процессы, чтобы автоматически сбрасывать регистраторы после обработки каждого - [Новое в Symfony 5.3: Встроенный контекст сериализации](https://fritool.ru/new-in-symfony-5-3-inlined-serialization-context/) - Компонент сериализатора предоставляет механизм для настройки способа сериализации/десериализации данных: параметры контекста. Эти параметры передаются как необязательный аргумент методов сериализации/десериализации. В Symfony 5.3 улучшили сериализатор, чтобы вы могли определять контекст как часть информации о сопоставлении благодаря новой аннотации/атрибуту Serializer\Context. Например, чтобы определить, как должно быть отформатировано какое-либо свойство datetime, используйте следующее: use Symfony\Component\Serializer\Annotation as Serializer; use - [Новое в Symfony 5.3: Настройка нескольких сред в одном файле](https://fritool.ru/new-in-symfony-5-3-configure-multiple-environments-in-a-single-file/) - Symfony определяет различные среды конфигурации, поэтому вы можете изменять поведение своего приложения в зависимости от того, где оно запущено (например, локально на вашем компьютере разработки, на производственном сервере и т. д.) Параметры, применяемые к пакетам/пакетам во всех средах, определены в config/packages/, а конкретные параметры каждой среды определены в config/packages//. Это работает хорошо, но это обременительно, - [Новое в Symfony 5.3: Улучшенные команды отладки](https://fritool.ru/new-in-symfony-5-3-improved-debug-commands/) - Команды консоли отладки - одна из ключевых частей отладки Symfony. В Symfony 5.3 улучшили их новыми функциями и новыми командами. Отладка событий для диспетчера событий Последние функции, представленные в компоненте Security, изменили количество диспетчеров событий, которые приложения Symfony имеют по умолчанию. Каждый брандмауэр теперь определяет своего собственного диспетчера, тогда как команда debug:event-dispatcher отображает только диспетчер - [Новое в Symfony 5.3: Прекращение поддержки сессионных сервисов](https://fritool.ru/new-in-symfony-5-3-session-service-deprecation/) - В приложениях Symfony вы можете получить доступ к сеансу через службу сеанса или его псевдоним автоподключения SessionInterface. Это удобно, но технически неправильно по ряду причин: Сеанс — это объект данных (например, объект запроса), поэтому для него не должно быть определенной службы в контейнере;Сеансы не являются частью спецификации HTTP (HTTP / 1.1, HTTP / 2 или - [Новое в Symfony 5.3: Улучшения UID](https://fritool.ru/new-in-symfony-5-3-uid-improvements/) - Компонент UID был представлен в Symfony 5.1 как экспериментальная функция, которая поможет вам создавать и работать с UID (универсально уникальными идентификаторами), такими как UUID и ULID. В Symfony 5.3 этот компонент больше не считается экспериментальным, и добавили в него несколько новых функций. Новые способы создания UID Создавать значения UID легко благодаря таким методам, как Uuid::v1(), - [Новое в Symfony 5.3: Улучшения для безопасности пользователей](https://fritool.ru/new-in-symfony-5-3-improvements-for-security-users/) - User переименован в InMemoryUser В приложениях Symfony провайдер пользователей в памяти позволяет создавать пользователей (и определять их учетные данные) в файле конфигурации, который загружается в память, без использования баз данных или любой другой постоянной службы. Хотя этот провайдер пользователей предназначен только для прототипов или очень маленьких/специальных приложений, он основан на классе с именем User (все пространство - [Новое в Symfony 5.3: Помощник обработчика форм](https://fritool.ru/new-in-symfony-5-3-form-handler-helper/) - Рекомендуемый способ обработки форм Symfony — использовать одно действие как для рендеринга формы, так и для обработки отправки формы. Вот как это выглядит на практике: // src/Controller/ConferenceController.php // ... #[Route('/{id}/edit', name: 'conference_edit', methods: ['GET', 'POST'])] public function edit(Request $request, Conference $conference): Response { $form = $this->createForm(ConferenceType::class, $conference); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // do - [Новое в Symfony 5.3: Компонент PasswordHasher](https://fritool.ru/new-in-symfony-5-3-password-hasher-component/) - Хеширование паролей — это процесс применения криптографической хеш-функции для преобразования исходного простого текстового пароля в другое значение, которое невозможно угадать, которое невозможно инвертировать. По историческим причинам Symfony использует термин «кодирование пароля», когда он действительно должен относиться к «хешированию пароля». Это вызвало некоторую путаницу у людей, изучающих Symfony, поэтому решили исправить это в Symfony 5.3 раз - [Новое в Symfony 5.3: Тема CSS-формы Tailwind](https://fritool.ru/new-in-symfony-5-3-tailwind-css-form-theme/) - Tailwind CSS — это самый популярный фреймворк CSS, ориентированный на полезность. Его уникальная (и на первый взгляд странная) философия делает его ошеломляющим успехом и меняет способ управления CSS во многих приложениях. Symfony включает готовые к использованию темы, чтобы ваши формы соответствовали внешнему виду других популярных фреймворков, таких как Bootstrap и Foundation. Вот почему в Symfony - [Новое в Symfony 5.3: Параметры команды отрицания](https://fritool.ru/new-in-symfony-5-3-negatable-command-options/) - В некоторых консольных командах принято определять две связанные опции с противоположным поведением. Например, параметры по умолчанию, применяемые ко всем командам Symfony, включают параметры --ansi и --no-ansi: // ... use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputOption; class SomeCommand extends Command { // ... protected function configure(): void { $this // ... ->addOption('ansi', null, InputOption::VALUE_NONE, 'Force ANSI output') ->addOption('no-ansi', null, - [Выпущены Webpack Encore 1.0 и Stimulus Bridge 2.0!](https://fritool.ru/webpack-encore-1-0-stimulus-bridge-2-0-released/) - Symfony команда была занята инициативой Symfony UX. Но недавно выпустили обновление. Выпущен Encore 1.0 (поддержка Webpack 5) Спустя 4 года (уже будучи стабильной) рады приветствовать Webpack Encore 1.0 в семье. Что нового: Encore теперь использует Webpack 5, который сам по себе представляет множество функцийПостоянный кеш сборки: благодаря новому методу Encore.enableBuildCache() вы можете наслаждаться более быстрыми - [Новое в Symfony: Экосистема JavaScript для Symfony](https://fritool.ru/new-in-symfony-the-ux-initiative-new-java-script-ecosystem-for-symfony/) - С момента своего создания JavaScript всегда был ориентирован на создание инновационного пользовательского опыта. Это позволяет разработчикам создавать максимально интуитивно понятный и удобный пользовательский интерфейс для конкретной проблемы. Однако на практике создать хороший пользовательский опыт с помощью JavaScript сложно. Требуется время, чтобы выбрать надежные пакеты, настроить их, интегрировать в свои страницы и заставить интерфейсный код взаимодействовать - [Новое в Symfony 5.2: Улучшения компонента оповещения](https://fritool.ru/new-in-symfony-5-2-notifier-improvements/) - Компонент Notifier отправляет уведомления по одному или нескольким каналам (электронная почта, SMS и чаты, такие как Slack и Telegram). В Symfony 5.2 улучшили его следующими функциями. Интеграция профилировщика Symfony Одной из основных недостающих функций компонента Notifier было отсутствие интеграции с панелью инструментов отладки и профилировщиком Symfony. В Symfony 5.2 это исправили. Во-первых, на панели инструментов - [Новое в Symfony 5.2: Компонент семафор](https://fritool.ru/new-in-symfony-5-2-semaphore-component/) - Symfony представила компонент Lock в Symfony 3.4, чтобы предоставить механизм для предоставления монопольного доступа к общему ресурсу. В некоторых случаях недостаточно предоставить доступ к одному процессу, и вам нужно разрешить доступ нескольким параллельным процессам. Согласно определению Википедии, семафор — это переменный или абстрактный тип данных, используемый для управления доступом к общему ресурсу множеством процессов в - [Новое в Symfony 5.2: Ссылки для входа](https://fritool.ru/new-in-symfony-5-2-login-links/) - Ссылки для входа, также называемые «магическими ссылками», представляют собой механизм аутентификации без пароля. Когда пользователь хочет войти в ваше приложение, создается и отправляется ему новая ссылка (например, по электронной почте). Пользователю достаточно щелкнуть ссылку для полной аутентификации в приложении. Этот метод аутентификации становится все более популярным, потому что он помогает компаниям избавиться от большей части - [Новое в Symfony 5.2: Ограничения как атрибуты PHP](https://fritool.ru/new-in-symfony-5-2-constraints-as-php-attributes/) - PHP 8 будет выпущен через несколько недель и будет включать функцию изменения правил игры, называемую атрибутами (или аннотациями). В Symfony 5.2 добавили поддержку определения маршрутов как атрибутов и аргументов контроллера как атрибутов. Ограничения казались следующим очевидным шагом, поэтому в Symfony 5.2 вы можете определять ограничения проверки как атрибуты PHP. Переход был разработан таким образом, чтобы - [Новое в Symfony 5.2: Помощники полей форм](https://fritool.ru/new-in-symfony-5-2-form-field-helpers/) - Symfony Forms помогает вам создавать и обрабатывать HTML—формы, абстрагируя все сложные и повторяющиеся вещи. Он также предоставляет множество утилит для визуализации содержимого формы, от инструкции render-all {{form (form)}} до отдельных помощников формы: {{ form_start(form) }} {{ form_errors(form) }} {{ form_label(form.dueDate) }} {{ form_widget(form.dueDate) }} {{ form_help(form.dueDate) }} - [Новое в Symfony 5.2: Регулирование входа в систему](https://fritool.ru/new-in-symfony-5-2-login-throttling/) - Распространенная атака грубой силы на веб-приложения состоит в том, что злоумышленник много раз отправляет форму входа в систему в надежде в конечном итоге угадать пароль какой-либо учетной записи. Одна из лучших мер противодействия этим атакам — это «регулирование входа в систему», при котором пользователю запрещается вход в систему после определенного количества неудачных попыток. Благодаря недавно - [Новое в Symfony 5.2: Конфигурация фронтального контроллера](https://fritool.ru/new-in-symfony-5-2-front-controller-configuration/) - Фронт—контроллер — это шаблон проектирования, который заставляет все запросы обрабатывать определенный фрагмент кода. В приложениях Symfony для этого предназначен файл public/index.php. При настройке определенных функций фронт—контроллера, таких как доверенные прокси—серверы в балансировщиках нагрузки или HTTP—кеш в обратных прокси-серверах, необходимо отредактировать код файла public/index.php. В Symfony 5.2 представили новую функцию для настройки поведения фронт—контроллера с помощью - [Новое в Symfony 5.2: Компонент ограничения](https://fritool.ru/new-in-symfony-5-2-rate-limiter-component/) - «Ограничитель скорости» контролирует, как часто может происходить какое-либо событие (например, HTTP-запрос или попытка входа в систему). Ограничение скорости обычно используется в качестве защитной меры для защиты услуг от чрезмерного использования. Symfony 5.2 представляет новый компонент RateLimiter, так что вы можете добавлять эти средства защиты в свои собственные приложения. Например, представьте, что вы хотите применить те - [Новое в Symfony 5.2: Сигналы консоли](https://fritool.ru/new-in-symfony-5-2-console-signals/) - Сигналы — это механизм межпроцессного взаимодействия, используемый консольными командами. Сигнал — это асинхронное уведомление, отправляемое процессу (или определенному потоку в том же процессе), чтобы уведомить его о произошедшем событии. Например, когда вы нажимаете Ctrl + C в команде, операционная система отправляет ей сигнал SIGINT. В Symfony 5.2 появилась поддержка ответа на сигналы в ваших командах - [Новое в Symfony 5.2: Общие блокировки](https://fritool.ru/new-in-symfony-5-2-shared-locks/) - В информатике задачи читателей—писателей связаны с ситуациями, когда множество параллельных потоков выполнения пытаются получить доступ к одному и тому же общему ресурсу одновременно. Блокировка чтения—записи — это примитив синхронизации, который решает одну из этих проблем. Он обеспечивает одновременный доступ для операций только для чтения, в то время как для операций записи требуется монопольный доступ. Это - [Новое в Symfony 5.2: Тестирование утверждений формы](https://fritool.ru/new-in-symfony-5-2-form-testing-asserts/) - Тестирование — неотъемлемая часть приложений Symfony. Вот почему мы продвигаем тестирование в документации и предоставляем специальные утилиты для тестирования, такие как мост PhpUnit. В Symfony 5.2 улучшили наш список настраиваемых тестовых утверждений новыми утверждениями для форм Symfony. В предыдущих версиях Symfony для тестирования форм Symfony требовалось иметь дело с переменными представления формы и делать такие - [Новое в Symfony 5.2: Атрибуты аргументов контроллера](https://fritool.ru/new-in-symfony-5-2-controller-argument-attributes/) - PHP 8 будет выпущен через несколько недель и будет включать функцию изменения правил игры, называемую атрибутами (или аннотациями). Symfony 5.2 уже включает атрибуты для определения маршрутов и необходимых зависимостей, но мы продолжили добавлять поддержку атрибутов там, где это имеет смысл. Вот почему в Symfony 5.2 вы также можете использовать атрибуты PHP для аргументов контроллера. Благодаря - [Новое в Symfony 5.2: Обратные вызовы отображения форм](https://fritool.ru/new-in-symfony-5-2-form-mapping-callbacks/) - Иногда объекты, обрабатываемые с помощью форм Symfony, не определяют ожидаемые методы получения/установки (например, getName() и setName()), но другие методы лучше согласованы с потребностями приложения (например, getName() и rename()). В этих случаях вы можете использовать средство отображения данных формы для перемещения данных объекта в поля формы и наоборот. В Symfony 5.2 улучшили это, чтобы использовать функции - [Новое в Symfony 5.2: сериализация и проверка Uid](https://fritool.ru/new-in-symfony-5-2-uid-serialization-and-validation/) - Компонент Symfony Uid предоставляет инструменты для генерации уникальных идентификаторов, таких как UUID и ULID, и работы с ними. В Symfony 5.2 улучшаем его интеграцию с остальной частью фреймворка. В предыдущей статье показали новые типы Doctrine для UUID и ULID, а в этой статье показана интеграция с компонентами Serializer и Validation. Нормализатор Uid Symfony 5.2 представляет - [Новое в Symfony 5.2: HTTP-клиент с возможностью повторной попытки](https://fritool.ru/new-in-symfony-5-2-retryable-http-client/) - Иногда запросы, сделанные с помощью HTTP-клиента, завершаются ошибкой по разным причинам (проблемы с сетью, временные ошибки сервера и т. д.). В Symfony 5.2 улучшили компонент HttpClient новой дополнительной функцией для автоматического повторения неудачных запросов. При использовании HttpClient внутри приложения Symfony используйте параметр retry_failed, чтобы включить и настроить эту функцию: # config/packages/framework.yaml framework: # ... http_client: - [Новое в Symfony 5.2: Аутентификация электронной почты DKIM](https://fritool.ru/new-in-symfony-5-2-dkim-email-authentication/) - DKIM (DomainKeys Identified Mail) — это метод аутентификации электронной почты, предназначенный для обнаружения поддельных адресов отправителя в электронных письмах (спуфинг электронной почты), метод, часто используемый при фишинге и спаме электронной почты. DKIM позволяет получателю проверить, что электронное письмо, которое якобы пришло из определенного домена, действительно было авторизовано владельцем этого домена. В Symfony 5.2 добавили поддержку - [Новое в Symfony 5.2: Перерасчет асинхронного кеша](https://fritool.ru/new-in-symfony-5-2-async-cache-recomputing/) - Паника кэша — это тип каскадного сбоя, который может произойти, когда механизмы кэширования подвергаются очень высокой нагрузке. Компонент Symfony Cache обеспечивает встроенную защиту от паники за счет «вероятностного досрочного истечения срока действия». При таком подходе каждый процесс, обращающийся к кэшированному значению, принимает решение о пересчете значения или нет. Это чисто вероятностное решение, вероятность которого возрастает - [Новое в Symfony 5.2: Более простые сборщики данных](https://fritool.ru/new-in-symfony-5-2-simpler-data-collectors/) - Профилировщик Symfony использует сборщики данных для сбора всей отладочной информации, которая позже отображается на панели инструментов и профилировщике. Эти сборщики данных представляют собой службы, классы которых реализуют DataCollectorInterface. Если сборщик данных включает шаблоны Twig для отображения своих данных, вы должны зарегистрировать службу вручную, чтобы определить шаблон для использования. Например, при использовании YAML для конфигурации: # - [Новое в Symfony 5.2: Профилирование сеанса](https://fritool.ru/new-in-symfony-5-2-session-profiling/) - Профилировщик Symfony — это мощный инструмент разработки, который дает вам подробную информацию о выполнении любого запроса. В Symfony 5.2 улучшили его, добавив профилирование сеанса, которое отображает всю информацию, относящуюся к сеансу текущего запроса. Во-первых, панель инструментов отладки теперь сообщает вам, использует ли текущая страница сеанс или нет, и была ли проверка сеанса без сохранения состояния: - [Новое в Symfony 5.2: Атрибуты PHP 8](https://fritool.ru/new-in-symfony-5-2-php-8-attributes/) - PHP 8 содержит новые интересные функции, такие как типы объединения, выражения соответствия и продвижение свойств конструктора. Однако наиболее востребованной новой функцией являются встроенные атрибуты (также называемые аннотациями). Symfony 5.2 будет включать поддержку атрибутов PHP 8 для определения маршрутов и необходимых зависимостей. Если вы уже используете аннотации, переход будет плавным: // BEFORE: annotations defined with Doctrine - [Новое в Symfony 5.2: Переводимые объекты](https://fritool.ru/new-in-symfony-5-2-translatable-objects/) - Для перевода содержимого обычно требуется больше информации, чем исходное сообщение, например параметры перевода и домен перевода. Чтобы упростить шаблоны, вы можете переводить все сообщения в бэкэнде и передавать переводы в шаблоны. Однако иногда это обременительно, а также требует внедрения службы переводчика на нескольких уровнях вашего приложения. Другой вариант — передать все данные перевода (сообщение, параметры, - [Новое в Symfony 5.2: Типы Doctrine для UUID и ULID](https://fritool.ru/new-in-symfony-5-2-doctrine-types-for-uuid-and-ulid/) - В Symfony 5.1 представили новый компонент Uid, который поможет вам генерировать и работать с различными значениями UID, такими как UUID и ULID. Следующим шагом будет улучшение интеграции с другими компонентами Symfony. Вот почему в Symfony 5.2 добавили типы и генераторы Doctrine для UUID и ULID. Вам нужно только установить Doctrine в свое приложение Symfony, и - [Новое в Symfony 5.2: HTTP-клиент EventSource](https://fritool.ru/new-in-symfony-5-2-event-source-http-client/) - События, отправленные сервером - это Интернет-стандарт, используемый для отправки данных на веб-страницы. Его JavaScript API построен вокруг объекта EventSource, который прослушивает события, отправленные с некоторого URL-адреса. События представляют собой поток данных (обслуживаемый MIME-типом text/event-stream) в следующем формате: data: This is the first message. data: This is the second message, it data: has two lines. data: - [Новое в Symfony 5.2: Правильные цвета в консоли](https://fritool.ru/new-in-symfony-5-2-true-colors-in-the-console/) - Компонент Symfony Console предоставляет стиль по умолчанию для вывода вашей команды, но вы также можете применять собственные стили и цвета. Однако вы могли использовать только восемь основных цветов ANSI для цвета текста и фона. В Symfony 5.2 улучшаем эту функцию для поддержки 24-битных цветов, также известных как «истинные цвета». В общей сложности более 16 миллионов - [Новое в Symfony 5.2: Переводчик псевдо-локализации](https://fritool.ru/new-in-symfony-5-2-pseudo-localization-translator/) - Symfony 5.2 будет выпущен в ноябре 2020 года. Это первая статья из серии, в которой показаны наиболее важные новые функции, представленные этой версией Symfony. На следующем изображении показано главное меню интерфейса популярного интернет-сервиса: Ошибки такого рода очень распространены, потому что разные языки могут быть длиннее или короче, чем исходный язык приложения. Другой распространенной проблемой является - [Новое в Symfony 5.1: Разные улучшения (Часть 3)](https://fritool.ru/new-in-symfony-5-1-misc-improvements-part-3/) - Разрешить включать серьезность в ConstraintViolationList Компонент Symfony Validator позволяет включать полезную нагрузку в нарушения ограничений с серьезностью ошибки и другими данными. В Symfony 5.1 улучшили компонент Serializer, чтобы также можно было добавлять полезную нагрузку с данными в ConstraintViolationList: use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer; use Symfony\Component\Validator\Constraints\NotNull; use Symfony\Component\Validator\ConstraintViolation; use Symfony\Component\Validator\ConstraintViolationList; $constraint = new NotNull(); $constraint->payload = ['severity' => 'warning', - [Новое в Symfony 5.1: Разные улучшения (Часть 2)](https://fritool.ru/new-in-symfony-5-1-misc-improvements-part-2/) - Команда YAML linter Symfony включает в себя линтер, который проверяет правильность синтаксиса ваших файлов конфигурации YAML. Он доступен под командой lint:yaml, но требует использования всего консольного приложения проекта Symfony. В Symfony 5.1 добавили приложение с одной командой под названием yaml-lint, чтобы вы могли линтировать файлы YAML, используя только компоненты Yaml и Console: php vendor/bin/yaml-lint translations/ - [Новое в Symfony 5.1: Разные улучшения (Часть 1)](https://fritool.ru/new-in-symfony-5-1-misc-improvements-part-1/) - За последние недели опубликовали десятки статей о наиболее заметных новых функциях Symfony 5.1, которые будут выпущены через несколько дней. В этих заключительных статьях серии мы продемонстрируем некоторые второстепенные, но полезные новые функции, которые упростят вашу работу по разработке. Добавлены константы для кодов выхода команд В Symfony 4.4 изменили консольные команды, чтобы они требовали от них - [Новое в Symfony 5.1: Обновленная система безопасности](https://fritool.ru/new-in-symfony-5-1-updated-security-system/) - Symfony 5.1 будет включать новую систему безопасности как одну из самых больших новых функций. После нескольких месяцев планирования, обсуждений и тяжелой работы смогли вовремя завершить работу над Symfony 5.1 в качестве экспериментальной функции. Основные отличия от предыдущей системы: Убрано все кроме гвардии В новой системе безопасности есть только один слушатель, который передает запрос диспетчеру аутентификатора, - [Новое в Symfony 5.1: Автоматическое обновление схемы](https://fritool.ru/new-in-symfony-5-1-automatic-schema-updates/) - Некоторые компоненты Symfony (например, Cache, Lock, Messenger и т. д.) Могут хранить свое содержимое в базах данных с помощью Doctrine ORM. Для работы требуется некоторая ручная настройка. Например, чтобы хранить сеансы в базе данных, вы должны создать таблицу, в которой хранится информация. Команда Symfony большие поклонники автоматизации, поэтому решили автоматизировать все это в Symfony 5.1. - [Новое в Symfony 5.1: Улучшения HttpFoundation](https://fritool.ru/new-in-symfony-5-1-http-foundation-improvements/) - Добавлен InputBag Класс ParameterBag, определенный Symfony, похож на объектно-ориентированный массив, который хранит связанные значения и предоставляет такие методы, как get(), set(), has() и т. д. Symfony определяет специализированные классы ParameterBag для некоторых целей (например, FileBag для загруженных файлов. , ServerBag для заголовков HTTP и т. д.) В Symfony 5.1 представили новый класс InputBag (который является - [Новое в Symfony 5.1: Улучшения формы](https://fritool.ru/new-in-symfony-5-1-form-improvements/) - Добавлен параметр html5 в ColorType Добавили новую опцию html5 в поле формы ColorType. Если для этого параметра установлено значение true, тип формы проверяет, соответствует ли его значение цветовому формату HTML5, то есть /^#[0-9a-f]{6}$/i. Добавлен параметр rounding_mode в PercentType Новый параметр rounding_mode поля формы PercentType полезен в сочетании с параметром масштабирования, который определяет допустимое количество десятичных - [Новое в Symfony 5.1: Улучшения валидатора](https://fritool.ru/new-in-symfony-5-1-validator-improvements/) - В дополнение к новым валидаторам AtLeastOneOf, ExpressionLanguageSyntax и Hostname, Symfony 5.1 представил другие улучшения валидатора. Добавлен вариант alpha3 для страны Если вы установите для новой опции alpha3 значение true в валидатора Country, значение будет проверено как действительный трехбуквенный код страны ISO 3166-1 alpha-3 (например, ARG = Аргентина) вместо стандартного ISO 3166-1 alpha-2. двухбуквенный код страны - [Новое в Symfony 5.1: Улучшения в OptionsResolver](https://fritool.ru/new-in-symfony-5-1-options-resolver-improvements/) - Компонент OptionsResolver помогает настраивать объекты с массивами параметров. В Symfony 5.1 улучшили его с помощью следующих функций. Fluent Interface Обычно для каждого параметра настраивается несколько функций (его разрешенные типы, значения по умолчанию, требуется ли он или нет и т. д.). Благодаря новому методу define() вы можете использовать свободный интерфейс для настройки всего, что касается параметра, - [Новое в Symfony 5.1: Решение о доступе на основе приоритета избирателей](https://fritool.ru/new-in-symfony-5-1-access-decision-based-on-voter-priority/) - В приложениях Symfony Voters безопасности централизуют логику авторизации, которая решает, может ли данный пользователь получить доступ к запрошенному ресурсу. Это обычные службы Symfony, помеченные тегом security.voter, поэтому они могут определять свои приоритеты с помощью атрибута priority тега. На практике этот приоритет Voter в основном не имеет значения из-за стратегий решения о доступе, используемых Symfony: утвердительный - [Новое в Symfony 5.1: Валидатор AtLeastOneOf](https://fritool.ru/new-in-symfony-5-1-atleastoneof-validator/) - В дополнение к валидатору Hostname и валидатору ExpressionLanguage, в Symfony 5.1 добавили еще один валидатор с именем AtLeastOneOf. Вы можете применить его к методам и свойствам, чтобы гарантировать, что их значения удовлетворяют хотя бы одному из заданных ограничений (которое может быть любым из встроенных ограничений Symfony и/или ваших собственных пользовательских ограничений): namespace App\Entity; use Symfony\Component\Validator\Constraints - [Новое в Symfony 5.1: Устарел компонент Inflector](https://fritool.ru/new-in-symfony-5-1-deprecated-the-inflector-component/) - Компонент Symfony Inflector преобразует слова между их формами единственного и множественного числа (пока только на английском языке). Он используется в нескольких частях Symfony для генерации уникальных имен свойств из множественных имен методов и наоборот ($foo setFoos(), $foos addFoo()). В Symfony 5.1 пометили этот компонент как устаревший и перенесли его логику в компонент String, - [Новое в Symfony 5.1: Устаревание публичного сервиса в приватных сервисах](https://fritool.ru/new-in-symfony-5-1-deprecate-public-services-into-private-services/) - Одной из ключевых функций, которая заставляет разработчиков любить Symfony, является обработка устаревших функций. Обещание обратной совместимости Symfony («обещание BC») гарантирует, что ваше приложение никогда не сломается при обновлении между второстепенными версиями. В Symfony 5.1 представили новый способ отказаться от общедоступных сервисов и превратить их в частные, сохраняя обещание BC. На практике эти функции требуют добавления - [Новое в Symfony 5.1: Защита от подделки запросов на стороне сервера](https://fritool.ru/new-in-symfony-5-1-server-side-request-forgery-protection/) - Уязвимости безопасности, такие как CSRF (подделка межсайтовых запросов), хорошо известны большинству веб-разработчиков, и Symfony обеспечивает автоматическую защиту от них. Связанная, но менее известная уязвимость называется SSRF (подделка запросов на стороне сервера). SSRF позволяет злоумышленнику заставить серверное приложение отправлять HTTP-запросы в произвольный домен. Эти атаки также могут быть направлены на внутренние хосты и IP-адреса атакованного сервера. - [Новое в Symfony 5.1: Валидатор ExpressionLanguage](https://fritool.ru/new-in-symfony-5-1-expression-language-validator/) - Компонент ExpressionLanguage предоставляет механизм для компиляции и оценки выражений. Он используется многими компаниями, чтобы позволить не разработчикам писать бизнес-правила (например, оценить следующее выражение, чтобы решить, предлагает ли ваш магазин скидку: 'user ["isActive"] == true and product ["price"]> 20'). В Symfony 5.1 улучшили компонент ExpressionLanguage, чтобы позволить проверять выражения без их анализа или оценки. Классы ExpressionLanguage - [Новое в Symfony 5.1: Упрощенный контекст запроса](https://fritool.ru/new-in-symfony-5-1-simpler-request-context/) - Создание URL-адресов в консольных командах и любых других местах за пределами веб-контекста является сложной задачей, поскольку Symfony не имеет доступа к текущему хосту, базовому URL-адресу и т. д. Решение состоит в том, чтобы настроить контекст запроса, используя параметры контейнера, такие как router.request_context.host. В Symfony 5.1 уже улучшили это, позволяя вам настраивать эти значения с помощью - [Symfony 6](https://fritool.ru/symfony-6/) - [Новое в Symfony 5.1: Поддержка Async AWS](https://fritool.ru/new-in-symfony-5-1-async-aws-support/) - Официальный AWS SDK для PHP упрощает интеграцию сервисов Amazon AWS (Amazon S3, Amazon DynamoDB и т. д.) В ваши PHP-приложения. Этот SDK является полным набором функций, обеспечивающим поддержку более 200 сервисов AWS (с помощью 8000 методов). Проект Async AWS является неофициальным переосмыслением AWS SDK. Он обеспечивает поддержку только для наиболее часто используемых служб (7 против - [Новое в Symfony 5.1: Улучшения сериализатора](https://fritool.ru/new-in-symfony-5-1-serializer-improvements/) - Добавлена аннотация @Ignore В Symfony 5.1 добавлена новая аннотация @Ignore, позволяющая игнорировать некоторые значения при сериализации. Вы можете применить аннотацию как к свойствам, так и к методам. Пример: use Symfony\Component\Serializer\Annotation\Ignore; class SomeClass { public $someProperty; /** * @Ignore() */ public $anotherProperty; private $lastProperty; /** * @Ignore() */ public function getLastProperty() { return $this->lastProperty; } } - [Новое в Symfony 5.1: URI Resolver](https://fritool.ru/new-in-symfony-5-1-uri-resolver/) - Компонент DomCrawler облегчает навигацию по DOM для документов HTML и XML. Большинство разработчиков используют его в функциональных тестах своих приложений Symfony, но вы можете использовать его для создания реального сканера. При создании сканера обычно необходимо превратить ссылки содержимого HTML, которые обычно являются относительными, в абсолютные URL-адреса для продолжения сканирования всего сайта. Например, если URL-адрес сайта - [Новое в Symfony 5.1: Новые и улучшенные интеграции](https://fritool.ru/new-in-symfony-5-1-new-and-improved-integrations/) - Компоненты Symfony обеспечивают интеграцию с другими технологиями (Redis, Doctrine, Sodium и т. д.) И сторонними сервисами (Google, Mailgun, Slack и т. д.). В Symfony 5.1 обновили несколько компонентов, чтобы добавить и улучшить интеграцию. Компонент Lock Добавлено MongoDbStore для использования серверов MongoDB >= 2.2 для хранения блокировок (реализовано Джо Беннеттом в #31889). Компонент Cache В хранилище - [Новое в Symfony 5.1: Декораторы стека](https://fritool.ru/new-in-symfony-stack-decorators/) - Промежуточное программное обеспечение – это компьютерное программное обеспечение, которое разделяет два или более API и предоставляет такие услуги, как ограничение скорости, аутентификация и ведение журнала. В Symfony вы можете добиться чего-то подобного, используя декораторы сервисов. Однако при оформлении нескольких сервисов конфигурация является многословной, и изменить порядок оформления сложно: services: App\Mailer\Mailer: ~ App\Mailer\RateLimitedMailer: decorates: App\Mailer\Mailer arguments: - [Новое в Symfony 5.1: Улучшенное микроядро](https://fritool.ru/new-in-symfonyimproved-microkernel/) - Symfony может использоваться в качестве микрорамки начиная с Symfony 2.8. Фактически, вы можете создавать полностью работающие приложения Symfony в одном файле благодаря MicroKernelTrait. В Symfony 5.1 улучшили MicroKernelTrait, чтобы позволить использовать ядро в качестве реестра контроллеров с автопроводкой и сервисных фабрик. В этом примере показано однофайловое приложение Symfony, которое определяет службу, которая автоматически подключается к - [Новое в Symfony 5.1: Абстрактные сервисные аргументы](https://fritool.ru/new-in-symfony-abstract-service-arguments/) - Иногда при определении служб в ваших приложениях Symfony есть аргументы, которые нельзя добавить в конфигурационные файлы. Причина заключается в том, что их значения могут быть рассчитаны только во время выполнения на этапе компиляции или расширения пакета. В этих случаях обычно добавляют пустой аргумент с некоторым комментарием, объясняющим, что значение будет введено позже. Например, вторым аргументом - [Новое в Symfony 5.1: Упрощенное оформление сервисов](https://fritool.ru/new-in-symfony-simpler-service-decoration/) - Сервис декорирования используется в приложениях Symfony для изменения поведения некоторого сервиса без его полной замены. Для этого вам нужно добавить исходный сервис в качестве аргумента нового сервиса оформления. Проблема в том, что исходный сервис больше не существует, поэтому вы не можете использовать его исходный идентификатор. В предыдущих версиях Symfony вам нужно было использовать синтаксис decorating - [Новое в Symfony 5.1: Разные хосты для локали](https://fritool.ru/new-in-symfony-different-hosts-per-locale/) - В Symfony 4.1 добавлена интернационализированная маршрутизация, позволяющая определять разные URL-адреса для каждой локали. В Symfony 5.1 улучшили эту функцию, чтобы также разрешать использование разных хостов для каждой локали. На практике это изменение означает, что теперь вы можете определить массив значений для опции хоста. Это работает как в конфигурации маршрутов, так и при импорте групп маршрутов. - [Новое в Symfony 5.1: Манифест удаленного ресурса](https://fritool.ru/new-in-symfony-remote-asset-manifest/) - Webpack Encore – это библиотека на чистом JavaScript, разработанная Symfony для упрощения интеграции Webpack в ваше приложение. При создании ресурсов Webpack Encore создает файл manifest.json, в котором перечислены все созданные ресурсы (и их версии). В Symfony 5.1 улучшили эту функцию, чтобы позволить использовать файлы манифеста, хранящиеся на других серверах и получаемые через HTTP-запросы. Это полезно - [Новое в Symfony 5.1: Более простая настройка выхода](https://fritool.ru/new-in-symfony-simpler-logout-customization/) - Несколько месяцев назад начали масштабную работу по улучшению всего компонента Symfony Security и его интеграции с остальной частью платформы Symfony. Все еще работаем над самыми большими изменениями, но уже закончили некоторые небольшие улучшения. Текущий LogoutListener может использоваться для запуска некоторой логики после выхода пользователя из приложения (например, для аннулирования некоторых токенов). Несмотря на то, что - [Новое в Symfony 5.1: Управление курсором](https://fritool.ru/new-in-symfony-cursor-control/) - Компонент Symfony Console предоставляет множество утилит для отображения содержимого в командной консоли, таких как индикаторы выполнения, таблицы со всеми видами стилей, интерактивные вопросы и т. д. В Symfony 4.1 даже ввели разделы вывода, позволяющие независимо обновлять различные части вывода. В Symfony 5.1 представили еще одну расширенную функцию, которая позволит вам управлять курсором. Благодаря новому классу - [Новое в Symfony 5.1: настраиваемая предварительная загрузка PHP](https://fritool.ru/new-in-symfony-configurable-php-preloading/) - Предварительная загрузка классов PHP – одна из самых важных функций, добавленных в PHP 7.4. При запуске сервера – перед запуском любого кода приложения - PHP может загрузить определенный набор файлов PHP в память и сделать их содержимое постоянно доступным для всех последующих запросов. Во время предварительной загрузки PHP также разрешает зависимости классов и связи с - [Новое в MakerBundle 1.15: make:reset-password & make:message](https://fritool.ru/new-in-maker-bundle-1-15-make-reset-password-make-message/) - MakerBundle 1.15 был только что выпущен и поставляется с несколькими новыми производителями. Давайте взглянем! Генерация полной, безопасной настройки пользователя с помощью make:reset-password В MakerBundle уже было почти все необходимое для быстрой загрузки всей системы безопасности благодаря make:user, make:auth (для аутентификаторов) и make:registration-form. Единственным распространенным отсутствующим элементом была система сброса пароля. Теперь вы можете создать полнофункциональную - [Новое в Symfony 5.1: Портативная реализация HTTP / 2](https://fritool.ru/new-in-symfony-portable-http-2-implementation/) - Компонент Symfony HttpClient обеспечивает полную поддержку HTTP/2 с первого дня, когда на вашем компьютере было установлено расширение cURL PHP. В Symfony 5.1 улучшили HTTP-клиент, чтобы обеспечить переносимую реализацию HTTP/2, которая не требует установки cURL. Библиотека amphp/http-client предоставляет асинхронный HTTP/1.1 + 2 клиент для PHP на основе Amp (неблокирующая среда параллелизма для приложений PHP). amphp/http-client вручную - [Новое в Symfony 5.1: Улучшения компонента строк](https://fritool.ru/new-in-symfony-string-improvements/) - Компонент String был представлен в Symfony 5.0 в качестве экспериментальной функции. В Symfony 5.1 он больше не будет экспериментальным, и его улучшили с помощью новых функций. Использовать Stringable интерфейс PHP 8 будет опубликован в Декабре 2020 года, но вы уже можете использовать некоторые его функции в своих приложениях PHP благодаря Symfony PHP 8 Polyfill. В - [Новое в Symfony 5.1: Улучшения маршрутизации](https://fritool.ru/new-in-symfony-routing-improvements-2/) - Symfony 5.1 добавляет важные новые функции, связанные с маршрутизацией, такие как приоритет для аннотаций маршрутов и более простая конфигурация маршрутов. В этой статье покажут другие незначительные, но интересные функции, добавленные в маршрутизацию. Добавлен атрибут маршрута без состояния Маршруты теперь могут настраивать логическую опцию stateless. Если установлено значение true, они объявляют, что сессии не будет использоваться - [Новое в Symfony 5.1: Улучшена настройка маршрута](https://fritool.ru/new-in-symfony-mproved-route-configuration/) - Перенаправления на другие URL-адреса и маршруты позволяют развиваться приложениям Symfony без разрыва существующих ссылок. Эти перенаправления настраиваются в файлах YAML, XML или PHP вместо аннотаций, и полученная конфигурация была немного многословной. В Symfony 5.1 улучшили его, чтобы сделать конфигурацию намного более лаконичной. В следующих примерах показаны изменения для файла config/rout.yaml, но это улучшение очень похоже - [Новое в Symfony Polyfills 1.15](https://fritool.ru/new-in-symfony-polyfills-1-15/) - Symfony Polyfills предоставляет PHP-реализации определенных функций PHP, поэтому вы можете использовать их, даже если у вас не установлена необходимая версия PHP или расширение PHP. Symfony Polyfill 1.15 был выпущен недавно, и это самые важные изменения. Улучшения в PHP 8 polyfill PHP 8.0, следующая основная версия PHP, заявленная к выпуску 3 декабря 2020 года, добавит некоторые - [Новое в Symfony 5.1: Улучшения темы формы](https://fritool.ru/new-in-symfony-form-theme-improvements/) - Новая тема формы для Foundation 6 Symfony предоставляет несколько встроенных тем форм, совместимых с Bootstrap 3.x и 4.x и Foundation 5. В Symfony 5.1 добавили новую тему для платформы Foundation 6. Сначала свяжитесь с ресурсами Foundation 6 из шаблонов приложений. Затем добавьте foundation_6_layout.html.twig в список тем в параметре конфигурации twig.form_themes, и все ваши формы будут - [Новое в Symfony 5.1: Улучшение перевода](https://fritool.ru/new-in-symfony-translation-improvements/) - Возможность настраивать включенных локалей Большинство приложений Symfony доступны на одном или нескольких языках. Однако Symfony создает файлы перевода для сообщений проверки и безопасности на всех языках. Другими словами, Symfony генерирует десятки (небольших) файлов перевода, которые ваше приложение никогда не будет использовать. В Symfony 5.1 ввели опцию enabled_locales для управления этим поведением: # config/packages/translation.yaml framework: translation: - [Новое в Symfony 5.1: Компонент Uid](https://fritool.ru/new-in-symfony-uid-component/) - UID (универсально уникальные идентификаторы), такие как UUID, становятся все более популярными в веб-разработке. Они используются в URL-адресах, в качестве ключей кэша, в качестве первичных ключей в базах данных и т. д. В Symfony 5.1 представили новый компонент под названием Uid, который генерирует некоторые из этих UID и предоставляет для них утилиты. Первая версия компонента поддерживает - [Новое в Symfony 5.1: Упрощенная авторизация в тестах](https://fritool.ru/new-in-symfony-simpler-login-in-tests/) - В функциональных тестах тестирование защищенных страниц требует входа в систему как пользователь. Воспроизведение фактического процесса входа в систему (например, ввод имени пользователя и пароля в форме входа в систему и его отправка) замедляет тестирование. Symfony рекомендует этот трюк в качестве более быстрой альтернативы, но он может не соответствовать вашим потребностям. Вот почему в Symfony 5.1 - [Новое в Symfony 5.1: Добавлена поддержка типизированных свойств в PropertyInfo](https://fritool.ru/new-in-symfony-added-support-for-typed-properties-in-property-info/) - Symfony 5.1 будет выпущен в мае 2020 года. Это первая статья серии, в которой показаны наиболее важные новые функции, представленные в этой версии Symfony. В PHP 7.4, выпущенном 28 ноября 2019 года, добавлена поддержка типизированных свойств, которые позволяют определять тип переменных при их объявлении: use Symfony\Component\HttpFoundation\Request; class SomeClass { public int $id; protected string $name; - [Новое в Symfony 5.1: Приложения одной команды](https://fritool.ru/new-in-symfony-single-command-applications/) - Компонент Console является вторым по популярности компонентом Symfony, его скачали почти 200 миллионов человек. Это настолько популярно, что многие разработчики пишут все свои команды с ним, вместо того, чтобы создавать традиционные команды bash/shell. По этой причине в Symfony 5.1 улучшили способ создания приложений с одной командой. Это уже было возможно в предыдущих версиях Symfony благодаря - [Новое в Symfony 5.1: Повторно используемые наборы ограничений](https://fritool.ru/new-in-symfony-reusable-sets-of-constraints/) - В некоторых приложениях часто используется один и тот же набор ограничений в нескольких местах. Рассмотрим, например, приложение, которое позволяет регистрировать пользователей, изменять пароли, запоминать забытые пароли и т. д. Это приложение может использовать разные DTO для каждой функции, но все они содержат новый пароль пользователя, который должен проверяться одинаково во всех случаях. В Symfony 5.1 - [Новое в Symfony 5.1: Приоритет аннотаций маршрутов](https://fritool.ru/new-in-symfony-route-annotations-priority/) - Маршруты Symfony могут включать переменные части, называемые параметрами, для соответствия различным URL-адресам, имеющим одинаковую структуру. Хотя вы можете ограничить значения параметров каждого маршрута, два или более маршрутов могут соответствовать одному и тому же URL. В этих случаях Symfony использует маршрут, который был определен первым. Если вы определяете маршруты, используя файлы YAML, XML или PHP, вы - [Новое в Symfony 5.1: Улучшения рабочего процесса](https://fritool.ru/new-in-symfony-workflow-improvements-2/) - Отключение анонсирования событий События workflow.announce запускаются для каждого перехода, который теперь доступен для субъекта. В Symfony 5.1 вы можете отключить эти события, используя контекст, переданный методу apply(): use Symfony\Component\Workflow\Workflow; $workflow->apply($subject, $transitionName, [Workflow::DISABLE_ANNOUNCE_EVENT => true]); Проверка существования рабочего процесса Вы можете внедрить службу реестра, чтобы иметь доступ ко всем рабочим процессам, определенным в приложении. В Symfony - [Новое в Symfony 5.1: Проверка имени хоста](https://fritool.ru/new-in-symfony-hostname-validator/) - Symfony предоставляет десятки валидаторов для проверки достоверности ваших данных. Это включает в себя несколько валидаторов, связанных с компьютерами и Интернетом, таких как валидатор электронной почты, валидатор IP-адреса и валидатор URL. В Symfony 5.1 добавили новую в эту группу: валидатор имени хоста, который проверяет, что данное значение считается допустимым в качестве имени хоста: // src/Entity/ServerSettings.php namespace - [Новое в Symfony 5.1: Улучшенный UriSigner](https://fritool.ru/new-in-symfony-improved-uri-signer/) - В приложениях Symfony служба, связанная с классом UriSigner, добавляет подпись к URL-адресам, чтобы предотвратить их манипулирование. Symfony использует его, например, для подписи URL-адресов, созданных при использовании фрагментов в таких функциях, как ESI. В Symfony 5.1 улучшили класс UriSigner с помощью нового метода checkRequest(). Это позволяет передать объект Symfony\Component\HttpFoundation\Request для проверки подписи соответствующего URL-адреса, вместо того - [Новое в Symfony 5.1: Упрощенные атрибуты безопасности](https://fritool.ru/new-in-symfony-simpler-security-attributes/) - Проверка статуса пользователей в приложениях Symfony (анонимных, вошедших в систему и т. д.) требует использования атрибутов безопасности, таких как IS_AUTHENTICATED_ANONYMOUSLY. Эти атрибуты иногда сбивают с толку, потому что они определяют не состояние, а условие. Например, IS_AUTHENTICATED_REMEMBERED верно для пользователей «Запомнить меня», но также и для полностью аутентифицированных пользователей. Вот почему в Symfony 5.1 ввели новые - [Новое в Symfony 5.1: «безопасный» HTTP-параметр](https://fritool.ru/new-in-symfony-the-safe-http-preference/) - Некоторые веб-сайты имеют «безопасный» режим, чтобы помочь тем, кто не хочет подвергаться воздействию контента, против которого они могут возражать. Вместо настройки этой опции для каждого веб-сайта браузер может указать ваши безопасные предпочтения для всех веб-сайтов. Эта функция полностью объяснена в документе RFC 8674. Вообще говоря, браузеры, запрашивающие безопасный контент, добавляют заголовок Prefer: safe HTTP и - [Новое в Symfony 5.1: Autowire общедоступных типизированных свойств](https://fritool.ru/new-in-symfony-autowire-public-typed-properties/) - Типизированные свойства, представленные в PHP 7.4, являются одной из наиболее важных функций, добавленных PHP за последние годы. В Symfony 5.1 реализовали новые возможности на их основе, такие как извлечение информации о типизированных свойствах с помощью компонента PropertyInfo. Рассмотрим этот пример, используя типизированные свойства: use Twig\Environment; class SomeServiceClass { /** @required */ public Environment $twig; public - [Новое в Symfony 5.0: Cтроковый компонент](https://fritool.ru/new-in-symfony-5-0-string-component/) - Symfony 5.0 был выпущен 21 ноября 2019 года. В отличие от Symfony 4.0, он не меняет структуру каталогов полностью и не добавляет какой-либо принципиально новый способ разработки. Вместо этого Symfony 5 опирается на плечи Symfony 4 и предоставляет новые функции, облегчающие жизнь. Согласно процессу выпуска Symfony, в Symfony 5.0 есть все новые функции, представленные в - [Новое в Symfony 4.4: Разные улучшения (Часть 3)](https://fritool.ru/new-in-symfony-4-4-misc-improvements-part-3/) - Улучшения хеширования паролей и миграции В Symfony 4.3 ввели собственный кодер паролей, чтобы Symfony выбирал лучший алгоритм для автоматического хэширования паролей. Это все еще рекомендуемый параметр, но некоторые приложения должны придерживаться определенного алгоритма по некоторым причинам. Вот почему в Symfony 4.4 исключили все определенные кодировщики, поэтому вы можете снова использовать их в своей конфигурации безопасности: - [Новое в Symfony 4.4: Разные улучшения (Часть 2)](https://fritool.ru/new-in-symfony-4-4-misc-improvements-part-2/) - Исключить ресурсы из конфигурации маршрутизации При настройке сервисов в Symfony вы можете исключить шаблоны файлов/каталогов, которые не следует превращать в службы. В Symfony 4.4 добавили аналогичную функцию, чтобы вы могли исключить шаблоны из конфигурации маршрутизации: # config/routes/annotations.yaml controllers: resource: ../../src/Controller/* type: annotation # annotations won't be loaded for the following patterns exclude: '../src/Controller/{DebugEmailController}.php' Нормализовать пробелы - [Новое в Symfony 4.4: Разные улучшения (Часть 1)](https://fritool.ru/new-in-symfony-4-4-misc-improvements-part-1/) - Улучшенные сообщения об ошибках PropertyAccess Большие сообщения об ошибках необходимы, чтобы избежать разочарования при использовании любого программного обеспечения. В Symfony 4.4 улучшили сообщения об ошибках, генерируемые PropertyAccess, при попытке найти доступное для записи свойство. Например, когда вы уже определили методы сумматора/удаления, но их подпись была неправильной (например, addFoo()/removeFoo()), это было отображено с ошибкой: Neither the - [Объявления типов Symfony, возвращаемые типы и совместимость с PHPUnit](https://fritool.ru/symfony-type-declarations-return-types-and-phpunit-compatibility/) - Если вы следите за категорией Living on the Edge блога Symfony, вы найдете все самые последние и самые новые функции каждой версии Symfony. Большие и маленькие функции, которые помогут вам создавать ваши проекты, имея при этом наилучшие возможности для разработчиков. Однако это только часть деятельности по разработке, необходимой для создания и поддержки Symfony. В этом - [Новое в Symfony 4.4: Улучшения WebProfiler](https://fritool.ru/new-in-symfony-4-4-web-profiler-improvements/) - Интеграция почты Новый Symfony Mailer был представлен в Symfony 4.3. В Symfony 4.4 улучшили и доработали его, включая интеграцию с профилировщиком. Панель инструментов отладки теперь отображает количество отправленных сообщений. Если вы щелкните по нему, вы увидите полную информацию о сообщении в новой панели профилировщика: Очистить Ajax запросов Когда вы делаете слишком много запросов Ajax или - [Новое в Symfony 4.4: Улучшения формы](https://fritool.ru/new-in-symfony-4-4-form-improvements/) - Отключение валидации при сабмите формы HTML-атрибут formnovalidate (определенный только для элементов image и input[type=submit]) позволяет отключить проверку на стороне клиента при отправке формы. В Symfony 4.4 кнопки отправки (SubmitType) определяют новый логический параметр validate для включения/отключения этой проверки: use Symfony\Component\Form\Extension\Core\Type\SubmitType; // ... $builder->add('save', SubmitType::class); $builder->add('save-as-draft', SubmitType::class, [ 'validate' => false, ]); Добавлена поддержка кодов Alpha-3 - [Новое в Symfony 4.4: Компонент ErrorHandler](https://fritool.ru/new-in-symfony-error-handler-component/) - Компонент Debug был выпущен в 2013 году для предоставления трех важных функций приложениям Symfony: Загрузчик класса отладки для выдачи полезных исключений, когда какой-то класс не найден; Обработчик ошибок для отлова ошибок PHP и их преобразования в исключения; Обработчик исключений для отлова необработанных исключений PHP и отображения для них удобных страниц ошибок. Вы просто должны были - [Новое в Symfony 4.4: Улучшения консоли](https://fritool.ru/new-in-symfony-console-improvements/) - Компонент Console является одним из самых популярных и зрелых компонентов Symfony. Даже если некоторые разработчики считают, что это уже полнофункционально, в каждой новой версии Symfony добавляем в нее некоторые небольшие новые функции. Сделайте обязательным возвращение статуса завершения команды Состояние выхода — это число, переданное родительскому процессу (или вызывающей стороне), когда процесс или команда завершили выполнение - [Новое в Symfony 4.4: Предварительная загрузка приложений Symfony в PHP 7.4](https://fritool.ru/new-in-symfony-preloading-symfony-applications-in-php-7-4/) - PHP 7.4 был выпущен несколько дней назад, и это самый захватывающий релиз PHP за последние годы. Он включает в себя изменяющие игру функции, такие как типизированные свойства, функции стрелок, ковариантные типы, FFI (интерфейс внешних функций), предварительную загрузку OPCache и многое другое. OPCache предварительная загрузка В самом начале PHP анализировал и компилировал любой файл, используемый для - [Представляем новый Symfony UUID Polyfill](https://fritool.ru/introducing-the-new-symfony-uuid-polyfill/) - UUID (универсальный уникальный идентификатор) - это 128-битное число, используемое для идентификации информации в компьютерных системах. Они становятся все более популярными в приложениях PHP/Symfony, где некоторые разработчики используют их даже в качестве идентификаторов для записей в базе данных (вместо традиционного целого числа с автоматическим приращением). Существуют разные варианты и версии UUID, поэтому большинство разработчиков полагаются на - [Новое в Symfony 4.4: Улучшения внедрения зависимостей (часть 2)](https://fritool.ru/new-in-symfony-dependency-injection-improvements-part-2/) - Улучшенный синтаксис YAML для вызовов методов Вызовы методов службы и внедрение метода установки – это разные способы вызова некоторых методов в ваших классах при создании служб для них. В Symfony 4.4 улучшили синтаксис YAML, чтобы сделать его более кратким и простым для чтения/записи: # config/services.yaml services: App\Service\MessageGenerator: # ... calls: - - method: setLogger - - [Новое в Symfony 4.4: Улучшения внедрения зависимостей (часть 1)](https://fritool.ru/new-in-symfony-dependency-injection-improvements-part-1/) - Сброс контейнера в один файл Изначально контейнер Symfony был скомпилирован и выгружен в большой файл PHP. Затем изменили его, чтобы разрешить сброс каждого сервиса в отдельный небольшой PHP-файл. В Symfony 4.4 добавили новую опцию конфигурации, чтобы снова разрешить сброс контейнера в один большой файл. Это включено по умолчанию для всех новых приложений Symfony, но вы - [Новое в Symfony 4.4: Улучшенный вызов Dump() в консоли](https://fritool.ru/new-in-symfony-improved-dump-calls-in-the-console/) - Symfony 4.4 был выпущен на прошлой неделе, но продолжим публиковать эту серию блогов «Новое в Symfony 4.4», чтобы упомянуть некоторые из его наиболее заметных новых функций. В дополнение к новым компонентам и большим фитчам, новые версии Symfony обычно добавляют функции «облегчающие разработку». Это небольшие функции, которые делают вас более продуктивным и улучшают ваш опыт разработчика - [🚀 Релиз Symfony 4.4.0](https://fritool.ru/symfony-4-4-0-released/) - Symfony 4.4.0 только что был выпущен (21.11.2019). Вот список наиболее важных изменений: ошибка #34464 Групповые ограничения [Form] при вызове валидатора (@nicolas-grekas) ошибка #34451 [DependencyInjection] Исправлен дамп нескольких устаревших псевдонимов (@shyim) ошибка #34448 [Form] позволяет именам кнопок начинаться с заглавной буквы (@xabbuh) ошибка #34428 [Security] Исправлена ошибка, из-за которой лучший кодировщик не был подключен с помощью - [🚀 Релиз Symfony 5.0.0](https://fritool.ru/symfony-5-0-0-released/) - Symfony 5.0.0 только что был выпущен (21.11.2019). Вот список наиболее важных изменений: ошибка #34464 Групповые ограничения [Form] при вызове валидатора (@nicolas-grekas) ошибка #34451 [DependencyInjection] Исправлен дамп нескольких устаревших псевдонимов (@shyim) ошибка #34448 [Form] позволяет именам кнопок начинаться с заглавной буквы (@xabbuh) ошибка #34434 [Маршрутизация] Исправление ContainerLoader и ObjectLoaderTest (@Routing) ошибка #34428 [Security] Исправлена ошибка, из-за - [Новое в Symfony 4.4: Linter для контейнер сервисов](https://fritool.ru/new-in-symfony-service-container-linter/) - Symfony включает в себя множество линтеров (проверок), которые являются командами, которые проверяют определенные части приложения (например, lint:yaml для проверки синтаксиса всех файлов YAML конфигураций; lint:twig для проверки синтаксиса всех шаблонов Twig и т. д.) В Symfony 4 добавили новый линтер, команда для вызова — lint:container. Как вы уже догадались, он проверяет сервисы, определенные в контейнере. - [Новое в Symfony 4.4: Aнонимайзер IP-адресов](https://fritool.ru/new-in-symfony-ip-address-anonymizer/) - Конфиденциальность становится все более важной проблемой соблюдения требований для технологических компаний. Существующие нормативные акты, такие как EU 2016/679, широко известный как GDPR, и грядущие нормативные акты, такие как CCPA (Калифорнийский закон о защите прав потребителей), накладывают некоторые ограничения на сбор и обработку персональных данных. В дополнение к классическим личным данным, таким как имена и номера - [Новое в Symfony 4.4: Улучшения в HttpClient](https://fritool.ru/new-in-symfony-http-client-improvements/) - Компонент Symfony HttpClient был представлен в Symfony 4.3 как низкоуровневый HTTP-клиент с поддержкой как потоковых оболочек PHP, так и cURL. В Symfony 4.4 улучшили его с помощью множества новых функций. В PR #31641 сделали $response->getInfo('debug'), чтобы возвращать расширенные журналы о транзакции HTTP, чтобы вам было легче отлаживать проблемы. Пример сгенерированного журнала: * Found bundle for - [Новое в Symfony 4.4: Улучшенный контроль над Progress Bars в консоли](https://fritool.ru/new-in-symfony-better-control-of-console-progress-bars/) - Индикатор выполнения (Progress Bar) является одним из самых популярных функций компонента Console. Он позволяет отображать информацию о ходе выполнения команды, что идеально подходит для длительных команд. Самое сложное при создании некоторых прогресс баров — как определить частоту их перерисовки с помощью метода setRedrawFrequency(). Если вы перерисовываете его слишком часто, индикатор выполнения мигает слишком сильно, но - [Новое в Symfony 4.4: Улучшения кэша](https://fritool.ru/new-in-symfony-cache-improvements/) - Возможность использовать URL DSN в адаптерах PDO Адаптер кэша PDO позволяет настроить соединение несколькими способами: с помощью объекта PHP PDO, соединения Doctrine DBAL или имени источника данных (DSN). В Symfony 4.4 также будет возможно использовать URL–адрес DSN. Это означает, например, что вы можете повторно использовать значение DATABASE_URL, если хотите: # config/packages/cache.yaml framework: cache: pools: cache.app: - [Новое в Symfony 4.4: Тип формы Неделя](https://fritool.ru/new-in-symfony-week-form-type/) - Сколько недель в году? Если вы спросите, большинство людей скажут 52, но правильный ответ будет: 52 и 53, в зависимости от года. Чтобы быть точным, в году 52.1775 недель, и этот избыток накапливается до тех пор, пока году не дадут дополнительную неделю. Например, самым последним годом с 53 неделями был 2015 год. 31 декабря 2015 - [Новое в Symfony 4.4: Пользовательские переключатели Bootstrap](https://fritool.ru/new-in-symfony-bootstrap-custom-switches/) - Symfony предоставляет шаблон на основе Bootstrap 4 в качестве одной из необязательных тем, этот шаблон можно использовать для оформления форм приложений. В Symfony 4.4 добавили поддержку пользовательских переключателей Bootstrap. Переключатели (flip switches, toggles) позволяют стилизовать обычные флажки (checkbox), чтобы они выглядели более современными и динамичными. Вы, наверное, видели их во многих приложениях для смартфонов и - [Новое в Symfony 4.4: Ленивые Firewalls](https://fritool.ru/new-in-symfony-lazy-firewalls/) - В компоненте Symfony Security брандмауэры настраивают, как ваши пользователи смогут проходить аутентификацию (например, используя форму входа в систему, токен API и т. д.). Брандмауэры также настраивают, какие URL адреса они охватывают, и разрешено ли анонимным пользователям просматривать эти URL адреса или нет: # config/packages/security.yaml security: # ... firewalls: main: pattern: ^/ anonymous: ~ # ... - [Новое в Symfony 4.4: PHPUnit Polyfills](https://fritool.ru/new-in-symfony-php-unit-polyfills/) - Компонент PHPUnit Bridge улучшает исходную библиотеку PHPUnit с помощью утилит, сообщающих об использовании устаревшего кода и помощников для мока собственных функций, связанными со временем, DNS и существованием классов. При тестировании некоторого кода, который должен быть совместим с несколькими версиями PHP, трудно выбрать версию PHPUnit: последние версии, такие как PHPUnit 8, используют функции, несовместимые с PHP - [Новое в Symfony 4.4: Email уведомления](https://fritool.ru/new-in-symfony-notification-emails/) - Компонент Mime был представлен в Symfony 4.3, чтобы помочь вам создавать сообщения электронной почты. В Symfony 4.4 улучшили его с помощью уведомлений электронной почты. Эти электронные письма являются стандартными сообщениями, используемыми для отправки уведомлений (например, регистрация нового пользователя, оплата некоторых счетов и т. д.). use Symfony\Bridge\Twig\Mime\NotificationEmail; $email = (new NotificationEmail()) ->from('fabien@example.com') ->to('fabien@example.org') ->subject('My first notification - [Новое в Symfony 4.3: Собственный кодировщик паролей](https://fritool.ru/new-in-symfony-native-password-encoder/) - Хеширование паролей является одной из важнейших частей хорошей системы безопасности. В Symfony 4.3 добавили кодировщик паролей Sodium для хеширования (или «кодирования», как Symfony называет это по историческим причинам) паролей с использованием библиотеки libsodium. Однако, учитывая быстро развивающуюся природу хэшей, все меньше и меньше рекомендуется выбирать конкретный алгоритм хэширования. Даже функция PHP password_hash() определяет специальное значение - [Новое в Symfony 4.4: Подпись и шифрование сообщений электронной почты](https://fritool.ru/new-in-symfony-signing-sand-encrypting-email-messages/) - Symfony 4.4 будет выпущен в ноябре 2019 года. Это первая статья серии, в которой показаны наиболее важные новые функции, представленные в этой версии Symfony. Новые компоненты Mailer и Mime были введены в Symfony 4.3 для замены предыдущего решения, основанного на SwiftMailer. В Symfony 4.4 улучшили их с помощью новых функций, позволяющих подписывать и шифровать почтовые - [Новое в Symfony 4.4: Новые методы DomCrawler](https://fritool.ru/new-in-symfony-new-dom-crawler-methods/) - Компонент DomCrawler в основном используется в приложениях Symfony для помощи в функциональных тестов для фильтрации узлов DOM документов HTML/XML. Методы, предоставляемые DomCrawler, изначально были вдохновлены jQuery, такие как eq(), first(), children(), nextAll() и т. д. В Symfony 4.4 добавили три новых метода, часто запрашиваемых сообществом: match(), closest() и outerHtml(). Рассмотрим следующий фрагмент HTML: - [Новое в Symfony 4.4: Улучшение валидатора типа значений](https://fritool.ru/new-in-symfony-improved-type-constraint/) - Валидтор типов, включенное в компонент Validator, проверяет, что данное значение имеет определенный тип данных. Этот тип может быть любым из допустимых типов PHP, любой из функций PHP ctype (например, alnum, alpha, digit и т. Д.), А также FQCN любого класса: // src/Entity/Author.php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class Author { /** * @Assert\Type("Ramsey\Uuid\UuidInterface") */ - [Новое в Symfony 4.4: Messenger Middleware для очистки Doctrine Entity Manager](https://fritool.ru/new-in-symfony-messenger-middleware-to-clear-doctrine-entity-manager/) - В компоненте Messenger, middleware используется для настройки того, что происходит при отправке сообщения на message bus. В Symfony 4.4 добавили новый middleware для очистки Doctrine Entity Manager после использования каждого сообщения. Включите его, добавив messenger.middleware.doctrine_clear_entity_manager в middleware в bus. # config/packages/messenger.yaml framework: messenger: buses: messenger.bus.default: default_middleware: false middleware: # ... - 'messenger.middleware.doctrine_clear_entity_manager' Первое преимущество этого - [Новое в Symfony 4.4: PHPUnit Assertions для почтовых сообщений](https://fritool.ru/new-in-symfony-phpunit-sssertions-for-email-messages/) - Новые компоненты Mailer и Mime были введены в Symfony 4.3 для замены предыдущего решения, основанного на SwiftMailer. В Symfony 4.4 улучшили их с помощью новых утверждений PHPUnit для проверки электронной почты. Новые утверждения следуют той же философии, что и тестовые утверждения, представленные в Symfony 4.3, с длинными, но выразительными именами методов: // tests/Controller/DefaultControllerTest.php namespace App\Tests\Controller; - [Новое в Symfony Flex 1.2](https://fritool.ru/new-in-symfony-flex-1-2/) - Symfony Flex является рекомендуемой зависимостью современных приложений Symfony, которая повышает скорость разработки за счет автоматизации повторяющихся и скучных задач, таких как установка и автоматическая настройка пакетов и других библиотек. Symfony Flex 1.2 был выпущен с некоторыми полезными новыми функциями! Упрощенное обновление рецептов Рецепты Symfony определяют инструкции, используемые Symfony Flex для установки и настройки зависимостей в - [Новое в Symfony 4.4: Улучшенная страница приветствия](https://fritool.ru/new-in-symfony-improved-welcome-page/) - Когда вы просматриваете недавно созданный проект Symfony, вы видите специальную «страницу приветствия», которая выглядит следующим образом: Хотя это страница с ошибкой (вы видите эту страницу, потому что вы еще не настроили URL), разработали ее, чтобы она выглядела более дружественной, чем традиционная страница с ошибками, особенно для новичков. Эта страница подтверждает, что Symfony был успешно установлен, - [Новое в Symfony 4.4: Горизонтальные таблицы и списки определений в консольных командах](https://fritool.ru/new-in-symfony-horizontal-tables-and-definition-lists-in-console-commands/) - Компонент Console включает некоторые функции для вывода таблиц и их настройки различными способами. В Symfony 4.4 улучшили его с помощью новых типов таблиц. Горизонтальные таблицы Рассмотрим следующий пример: use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; // ... class SomeCommand extends Command { public function execute(InputInterface $input, OutputInterface $output) { $table = new Table($output); $table - [Zend Framework 2 Tool](https://fritool.ru/zend-framework-2-tool/) - Создание модулей, контролеров или событий при разработке проекта на базе ZendFramework2 влечет за собой создание кучи файлов. Данную проблему поможет решить ZFTool. Установить ZFTool можно несколькими способами: При помощи Composer: composer require zendframework/zftool:dev-master Клонировать с github: git clone https://github.com/zendframework/ZFTool.git Скачать zip или zftool.phar Я обычно использую phar архив, удобно тем что один файл. Команды ZFTool - [Новое в Symfony 4.4: Шифрование секретных параметров](https://fritool.ru/new-in-symfony-encrypted-secrets-management/) - Хранение конфиденциальной информации приложения (пароли, токены, сертификаты и т. д.) является сложной задачей. Вы не можете полагаться на традиционные файлы конфигурации и не можете полагаться ни на переменные среды. Вот почему в Symfony 4.4 добавили новую функцию шифрования для управления секретами. Представьте, что вы хотите сохранить все содержимое DATABASE_URL в секрете, чтобы избежать утечки учетных - [Новое в Symfony 4.4: Простые слушатели событий](https://fritool.ru/new-in-symfony-simpler-event-listeners/) - Symfony вызывает несколько событий во время запрос-ответ. Слушатели событий и подписчики событий позволяют вам выполнить некоторый код для ответа на эти события. Подписчики событий обычно предпочтительнее, потому что они могут слушать несколько событий и не требуют никакой конфигурации при использовании автоконфигурации. В Symfony 4.4 улучшили слушателей событий, чтобы упростить их настройку. Сначала удалите атрибут event - [Новое в Symfony 4.4: Перенос паролей](https://fritool.ru/new-in-symfony-password-migrations/) - В Symfony 4.3 представили встроенный кодировщик паролей для хеширования ваших пользовательских паролей с использованием наилучшего алгоритма, доступного на вашем сервере: # config/packages/security.yaml security: # ... encoders: App\Entity\User: algorithm: auto cost: 14 Этот алгоритм выбирается автоматически и может изменяться со временем, поэтому разные пользователи будут использовать разные алгоритмы. Технически это не проблема, потому что Symfony знает, - [Новое в Symfony 4.4: Улучшения Redis Cache](https://fritool.ru/new-in-symfony-redis-cache-improvements/) - Redis – это популярное хранилище структуры данных в памяти, которое используется в качестве базы данных, кэша и посредника сообщений. Redis также является одним из самых популярных адаптеров компонента Symfony Cache, усовершенствовали его в Symfony 4.4 с помощью новых функций. Добавлена поддержка Redis Sentinel Redis Sentinel – это распределенная система, обеспечивающая высокую доступность Redis. Это позволяет - [Новое в Symfony 4.3: Улучшения Workflow](https://fritool.ru/new-in-symfony-workflow-improvements/) - В Symfony 4.3 улучшили компонент Workflow с множеством основных и второстепенных функций. В этом блоге кратко изложены наиболее важные из них. Добавлен контекст для Workflow::apply() При применении перехода теперь можно передать пользовательский $context (например, пользователь, который выполнил переход, или текущую дату): $workflow->apply($article, $request->request->get('transition'), [ 'time' => date('y-m-d H:i:s'), ]); Перед использованием этой функции обновите свою - [Новое в Symfony 4.3: Упрощенный доступ к Intl данным](https://fritool.ru/новое-в-symfony-4-3-упрощенный-доступ-к-intl-данным/) - Проект ICU («Международные компоненты для Unicode») представляет собой широко используемый набор библиотек для обеспечения поддержки глобализации для программных приложений. В рамках своей миссии они предоставляют локализованные данные, которые обычно необходимы в проектах (например, название всех стран на всех языках, название и основные данные всех валют на всех языках и т. д.) Компонент Intl предоставляет методы, - [Новое в Symfony 4.3: Улучшено логирование HttpCache](https://fritool.ru/new-in-symfony-improved-http-cache-logging/) - Обратный прокси-сервер Symfony, предоставляемый функцией HttpCache, является кешем шлюза, написанным на PHP. Это не полнофункциональный обратный прокси-сервер, такой как Varnish, но он может обеспечить значительное повышение производительности без необходимости устанавливать, настраивать и обслуживать дополнительные приложения или службы. Вот почему некоторые проекты используют его даже в производстве. В Symfony 4.3 добавили новые параметры конфигурации, чтобы улучшить - [Новое в Symfony 4.3: Улучшенный анализатор HTML5 для DomCrawler](https://fritool.ru/new-in-symfony-better-html5-parser-for-dom-crawler/) - Компонент DomCrawler облегчает навигацию по DOM для документов HTML и XML, что делает его очень полезным для функциональных тестов и веб-скребков. Внутренне этот компонент использует расширение PHP DOM (и такие методы, как loadHtml()) для анализа содержимого HTML, включая HTML5. К сожалению, поддержка HTML5 в расширении PHP DOM далека от совершенства и включает в себя некоторые - [Новое в Symfony 4.3: Устарела интеграция с шаблонами](https://fritool.ru/new-in-symfony-deprecated-the-templating-component-integration/) - Компонент Symfony Templating предоставляет инструменты, необходимые для создания любой системы шаблонов, включая загрузку файлов шаблонов из нескольких источников, мониторинг их изменений и использование нескольких механизмов для их рендеринга. В приложениях Symfony этот компонент позволял использовать как PHP, так и Twig для создания шаблонов. Однако почти все разработчики используют Twig для создания традиционных шаблонов или сериализатора - [Новое в Symfony 4.3: Кодер паролей Sodium](https://fritool.ru/new-in-symfony-sodium-password-encoder/) - В Symfony 3.4 добавили хэш-пароль Argon2i в качестве современной замены хэш-памяти Bcrypt. Поддержка Argon2i обеспечивается библиотекой libsodium, которая автоматически выбирает вариант Argon2 (argon2d, argon2i или argon2id) на основе хост-системы. Учитывая, что выбор варианта Argon2 находится вне контроля Symfony, в Symfony 4.3 решили не добавлять Argon2idPasswordEncoder, чтобы исключить класс Argon2iPasswordEncoder и добавить вместо него универсальный класс - [Новое в Symfony 4.3: URL Helper](https://fritool.ru/new-in-symfony-url-helper/) - Генерация абсолютных (и относительных) URL для заданного пути является обычной потребностью во многих приложениях. В шаблонах Twig это тривиально благодаря функциям absolute_url() и lative_path() (не путайте их с функциями path() и url(), которые генерируют URL с использованием имен маршрутов). В Symfony 4.3 извлекли внутреннюю логику, используемую функциями Twig, в новый класс Symfony\Component\HttpFoundation\UrlHelper, который вы можете - [CURL для WebDAV на примере с Яндекс Диском](https://fritool.ru/curl-for-webdav/) - Использование CURL для загрузки файлов на Яндекс Диск через WebDAV. - [Новое в Symfony 4.3: Улучшение компонента инфлектор](https://fritool.ru/new-in-symfony-better-inflector/) - Symfony включает внутренний компонент Inflector, в обязанности которого входит преобразование английских слов из множественного числа в единственное. Он используется в компонентах PropertyInfo и PropertyAccess, чтобы найти единственную форму имени свойства: use Symfony\Component\Inflector\Inflector; $result = Inflector::singularize('teeth'); // tooth $result = Inflector::singularize('radii'); // radius В Symfony 4.3 улучшили компонент несколькими способами. Во-первых, удалили его тег @internal, поэтому - [Новое в Symfony 4.3: Валидатор часовых поясов](https://fritool.ru/new-in-symfony-timezone-validator/) - Список ограничений Symfony охватывает большинство общих требований к проверке веб-сайтов и приложений. Тем не менее, продолжаем прислушиваться к вашим отзывам и добавляем новые ограничения, предложенные сообществом. В Symfony 4.3 мы добавили новое ограничение часового пояса, чтобы проверить, является ли данное значение одним из действительных часовых поясов, определенных PHP (например, Africa/Nairobi). // src/Entity/UserSettings.php namespace App\Entity; use - [Новое в Symfony 4.3: Валидатор проверки паролей](https://fritool.ru/new-in-symfony-compromised-password-validator/) - Нарушение данных – это преднамеренное или непреднамеренное предоставление защищенной или частной/конфиденциальной информации ненадежной среде. Список нарушений данных увеличивается с каждым днем, и только в первой половине 2018 года было раскрыто около 4,5 миллиарда записей, включая пароли пользователей. Пользователи, которые устанавливают свои пароли для любых открытых паролей, представляют собой серьезную проблему безопасности для веб-сайтов и приложений. - [Новое в Symfony 4.3: Улучшенное автозаполнение консоли](https://fritool.ru/new-in-symfony-better-console-autocomplete/) - Компонент Console предоставляет утилиту для автозаполнения ответов на вопросы, созданные с помощью Помощника по вопросам. Это используется, например, для автозаполнения классов и объектов в MakerBundle для повышения вашей производительности. Однако автозаполнение требует заранее знать все возможные предложения. Это невозможно, если предложения зависят от пользовательского ввода, и нецелесообразно, если завершение является очень динамичным (например, при автозаполнении - [Новое в Symfony 4.3: Настройка служб с неизменяемыми установщиками](https://fritool.ru/new-in-symfony-configuring-services-iwith-immutable-setters/) - Обычная потребность в некоторых приложениях Symfony – использовать неизменяемые сервисы, в то же время используя черты для составления их дополнительных функций. Хотя сервисный контейнер Symfony поддерживает внедрение сеттера, у него есть некоторые недостатки (например, сеттеры могут вызываться не только во время создания, поэтому вы не можете быть уверены, что зависимость не будет заменена в течение - [Новое в Symfony 4.3: Улучшение тестовых утверждений](https://fritool.ru/new-in-symfony-better-test-assertions/) - В приложениях Symfony создавать функциональные тесты просто, благодаря утилитам предоставляемым классом WebTestCase и утверждениям PHPUnit. Однако для общих случаев использования (например, для проверки того, что ответ был успешным или он перенаправлен на некоторый URL-адрес) методы assert__() являются слишком простыми и требуют написания слишком большого количества кода. Многие разработчики Symfony создали свои собственные служебные классы для - [Новое в Symfony 4.3: Автоматическая защита от поисковых систем](https://fritool.ru/new-in-symfony-automatic-search-engine-protection/) - Такие поисковые системы, как Google, DuckDuckGo, Baidu и Yandex, отлично справляются с поиском и индексацией ваших веб-сайтов и приложений. Однако это не так здорово, когда вы случайно публикуете версию своего приложения для разработки. В Symfony 4.3 улучшили эту ситуацию, запретив индексацию в поисковых системах для приложений разработки. Как это работает? Если ядро приложения работает в - [Новое в Symfony 4.3: Уникальное ограничение](https://fritool.ru/new-in-symfony-unique-constraint/) - В Symfony 4.3 в компонент Validator добавили новое ограничение с именем Unique, чтобы проверить уникальность элементов коллекции (ни один из них не присутствует более одного раза): // src/Entity/Person.php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class Person { /** * @Assert\Unique(message="The {{ value }} email is repeated.") */ protected $contactEmails; } Новое ограничение может быть применено - [Новое в Symfony 4.3: Автоматическая валидация](https://fritool.ru/new-in-symfony-automatic-validation/) - Рассмотрим следующую сущность Doctrine: use Doctrine\ORM\Mapping as ORM; /** @ORM\Entity */ class SomeEntity { // ... /** @ORM\Column(length=4) */ public $pinCode; } Приведет ли следующий код к ошибке проверки? $entity = new SomeEntity(); $entity->pinCode = '1234567890'; $violationList = $validator->validate($entity); Ответ – нет. Удивительно, но многие разработчики Symfony все еще не осознают, что конфигурация отображения Doctrine - [Новое в Symfony 4.3: Исключение файлов с помощью Finder](https://fritool.ru/new-in-symfony-exclude-more-files-with-finder/) - Компонент Finder помогает найти файлы и каталоги на основе различных критериев (имя файла, размер, содержимое, время изменения и т. Д.). Это один из тех компонентов Symfony со скромной целью, но чрезвычайно успешный (более 100 миллионов загрузок и тысячи проектов в зависимости от него). При использовании систем контроля версий (или сокращенно «VCS»), таких как Git, этот - [Новое в Symfony 4.3: URL Env Var Processor](https://fritool.ru/new-in-symfony-url-env-var-processor/) - При использовании env vars для настройки Symfony обычно используют URL-адреса для определения значения параметров конфигурации, подобных DSN, например: # .env MONGODB_URL="mongodb://db_user:db_password@127.0.0.1:27017/db_name" Однако иногда вам необходимо получить доступ к некоторым частям URL-адреса (например, к имени базы данных или номеру порта), чтобы определить значение других параметров. В Symfony 4.3 добавили два новых процессора для переменных окружения (url - [Новое в Symfony 4.3: Улучшения маршрутизации](https://fritool.ru/new-in-symfony-routing-improvements/) - Булевы параметры контейнера в маршрутах В приложениях Symfony можно использовать параметры контейнера в конфигурации маршрутов. В Symfony 4.3 улучшили эту функцию, чтобы также поддерживать логические параметры, поэтому вы можете делать такие вещи: /** * @Route("/test", condition="%kernel.debug%") */ class TestController extends AbstractController { // ... } Устаревшие некоторые параметры маршрутизатора Следующие параметры конфигурации компонента маршрутизации устарели, - [Twig: Раскрытие информации о песочнице](https://fritool.ru/twig-sandbox-information-disclosure/) - Затронутые версии Twig 1.0.0 до 1.37.1 и 2.0.0 до 2.6.2 подвержены этой проблеме безопасности. Проблема была исправлена ​​в Twig 1.38.0 и 2.7.0. Описание Эта уязвимость влияет на режим песочницы Twig. Если вы не используете песочницу, ваш код не будет затронут. Twig позволяет оценивать ненадежные шаблоны в песочнице, где все запрещено, если это явно не разрешено - [Новое в Twig: Пространства имен классов](https://fritool.ru/new-in-twig-namespaced-classes/) - Шаблонный движок Twig был первоначально выпущен в 2008 году, за год до того, как PHP 5.3 представил пространства имен PHP в июне 2009 года. Вот почему исторически классы Twig никогда не использовали пространства имен: namespace App\Twig; class AppExtension extends \Twig_Extension { public function getFilters() { return [ new \Twig_SimpleFilter('...', [$this, '...']), ]; } // ... - [Новое в Symfony 4.3: Индексируемые и помеченные коллекции сервисов](https://fritool.ru/new-in-symfony-4-3-indexed-and-tagged-service-collections/) - Symfony предоставляет ярлык для внедрения всех служб, помеченных определенным тегом, что является обычной потребностью в некоторых приложениях, поэтому вам не нужно писать пропуск компилятора только для этого. В Symfony 4.3 улучшили это, чтобы позволить доступ к тегированным сервисам по вашему собственному заданному индексу. В следующем примере сервисы, помеченные app.handler, определяют дополнительный атрибут с именем key. - [Новое в Symfony 4.3: Устаревшие классы Role и SwitchUserRole](https://fritool.ru/new-in-symfony-4-3-deprecated-the-role-and-awitch-user-role-classes/) - Давняя цель Symfony – упростить определенные части системы безопасности. В Symfony 3.3 устарели как RoleInterface, а в Symfony 4.1 отказались от AdvancedUserInterface. В Symfony 4.3 пометили как устаревшие Role и SwitchUserRole классы. На практике есть несколько реальных преимуществ использования объектов вместо строк для представления ролей. В конечном итоге это привело только к накладным расходам, потому - [Новое в Symfony 4.3: Улучшения формы](https://fritool.ru/new-in-symfony-4-3-form-improvements/) - Добавлена функция Twig для получения родительской формы В Symfony 4.3 добавили функцию parent_form() Twig шаблонов, которая возвращает родительское представление формы или null, если представление формы уже является корневой формой. Использование этой функции должно быть предпочтительнее, чем доступ к родительской форме с помощью form.parent. Последний способ будет давать разные результаты, например, когда дочерняя форма называется родительской. - [Новое в Symfony 4.3: Конфигурируемый идентификатор сессии](https://fritool.ru/new-in-symfony-configurable-session-id/) - PHP определяет множество параметров конфигурации, связанных с сессиями. В Symfony определяем их с помощью параметров framework.session.*, поэтому вам не нужно изменять ваш PHP.ini для настройки этих значений. В Symfony 4.3 добавили две новые опции конфигурации, связанные с идентификаторами сеансов: # config/packages/framework.yaml framework: session: # configures the length of the string used for the session ID - [Новое в Symfony 4.3: Улучшен перевод формы](https://fritool.ru/new-in-symfony-improved-form-translation/) - Формы, созданные с помощью компонента Symfony Form, автоматически переводят свои метки и сообщения справки. Однако переводы не могут содержать никаких пользовательских параметров, потому что в Twig шаблонах фильтр trans() вызывается без передачи каких-либо параметров. В Symfony 4.3 улучшили перевод форм, позволяя определять пользовательские параметры перевода, используя три новых параметра конфигурации: label_translation_parameters, help_translation_parameters и attr_translation_parameters (этот - [Новое в Symfony 4.3: JSON валидатор](https://fritool.ru/new-in-symfony-json-validation/) - JSON, пожалуй, наиболее часто используемый формат в приложениях, разработанных с помощью Symfony. Вы, вероятно, делаете запросы к API JSON и отправляете/получаете полезные данные JSON в своих проектах. Вот почему Symfony предоставляет класс JsonResponse, способ построения аутентификации JSON, полную поддержку JSON в компоненте Serializer, помощник json() для контроллеров и т. д. В Symfony 4.3 улучшили компонент - [Не точность float в PHP](https://fritool.ru/imprecision-float-in-php/) - Знал что тип float не точен, но первый раз столкнулся с этим недавно. Рассмотрим пример: - [Новое в Symfony 4.3: Улучшена производительность PropertyAccess](https://fritool.ru/new-in-symfony-improved-performance-of-property-access/) - Компонент PropertyAccess позволяет читать/записывать свойства из объектов и массивов, используя простую строковую запись. Этот компонент используется такими компонентами Symfony, как Forms, Security, Validator, Workflow и сотнями других общедоступных проектов. В Symfony 4.3 улучшили его производительность путем рефакторинга кода класса ObjectNormalizer. Хитрость заключалась в том, чтобы добавить несколько ярлыков для случаев, когда мы знаем, что нам - [Новое в Symfony 4.3: Итерируемый прогресс бар](https://fritool.ru/new-in-symfony-iterable-progress-bars/) - Обычный рабочий процесс для индикаторов прогресса Symfony Console – их запуск, продвижение в соответствии с ходом выполнения задачи и завершение их: use Symfony\Component\Console\Helper\ProgressBar; $progressBar = new ProgressBar($output); $progressBar->start(); // ... do some work $progressBar->advance(); // needed to ensure that the bar reaches 100% $progressBar->finish(); В Symfony 4.3 улучшили этот рабочий процесс, когда вы работаете с - [Новое в Symfony 4.3: Улучшен NotBlank валидатор](https://fritool.ru/new-in-symfony-improved-not-blank-validator/) - NotBlank валидатор проверяет, что значение не является false, null, пустым массивом или пустой строкой. Большинство других ограничений игнорируют нулевые значения, но NotBlank проверяет их. Это вызывает проблемы в сценариях, таких как API, вызываемые из внешнего кода, где проще включать пустые поля вместо удаления этих полей при выполнении запросов. В Symfony 4.3 улучшили ограничение NotBlank, добавив - [Новое в Twig: Deprecated тег](https://fritool.ru/new-in-twig-deprecated-tag/) - Устаревание является ключом к обещанию обратной совместимости и обеспечивает плавный процесс обновления приложений Symfony. Тем не менее, вы можете запускать только устаревшие версии в коде PHP, поэтому вы не можете предупреждать пользователей о том, что некоторые шаблоны или блоки Twig будут объявлены устаревшими. Вот почему в Twig 1.36 и 2.6 добавили новый тег {% deprecated - [Новое в Symfony 4.3: Всегда включать значения параметра маршрута по умолчанию](https://fritool.ru/new-in-symfony-4-3-always-include-route-default-values/) - Новое в Symfony 4.3: Всегда включать значения параметра маршрута по умолчанию - [Новое в Symfony 4.2: Фильтр логов в профайлере](https://fritool.ru/new-in-symfony-4-2-profiler-log-filter/) - Symfony Profiler предоставляет подробную отладочную информацию о вашем приложении. Иногда в логи очень много записей, и читать логи становится неудобно. В Symfony 4.2 добавили фильтры на панель логов, чтобы ты мог видеть только те сообщения журнала, которые тебя интересуют: Так же можно фильтровать по каналам журнала: - [Новое в Symfony 4.3: Default и Trim процессоры для переменных окружения](https://fritool.ru/new-in-symfony-default-and-trim-env-var-processors/) - Процессоры для переменных окружения позволяют преобразовывать значения переменных перед их использованием в конфигурации приложения Symfony. Процессоры полезны, например, для преобразования типа переменной (который по определению всегда является строкой) в более подходящий тип, такой как целое число или логическое значение. В Symfony 4.3 добавили новые процессоры для обеспечения новых преобразований. Default процессор для переменных окружения Возвращает - [Новое в Symfony 4.3: Устаревшие псевдонимы сервисов](https://fritool.ru/new-in-symfony-deprecating-service-aliases/) - Устаревание – это ключ к обещанной обратной совместимости, которое обеспечивает плавное обновление ваших проектов между минорными версиями - [Новое в Symfony 4.3: Улучшены финансовые валидаторы](https://fritool.ru/new-in-symfony-improved-financial-constraints/) - Международный номер банковского счета (IBAN) – это международно согласованная система идентификации банковских счетов через национальные границы. Идентификационный код банка (BIC) – это уникальный идентификационный код для финансовых и нефинансовых организаций, определенный в стандарте ISO-9362. Хотя оба кода являются независимыми, они могут быть проверены в комбинации, чтобы подтвердить, что оба принадлежат, по крайней мере, к одной - [Новое в Symfony 4.3: Улучшения в DomCrawler](https://fritool.ru/new-in-symfony-dom-crawler-improvements/) - Метод extract() возвращает значение аттрибута и/или ноду из заданного списка. Вы можете использовать специальный атрибут _text что бы получить значение ноды. В Symfony 3.4 вы можете так же использовать новый специальный атрибут _name, что бы получить имя элементы (название HTML тэга): $attributes = $crawler->filterXPath('//body/*') ->extract(['_text', '_name', 'class']) ; Когда нода пустая вызов методов text() и - [Использование Touch ID для sudo в терминале на Mac Book Pro](https://fritool.ru/use-touch-id-for-sudo-in-terminal-on-macbookpro/) - Для авторизации в консоль на Mac Book Pro 2016 с Touch Bar надо отредактировать один файл. Запускай терминал, и вводи: sudo nano /etc/pam.d/sudo Вводи пароль. После авторизации при помощи пароля, в терминале откроется редактор с таким содержимым: # sudo: auth account password session auth sufficient pam_smartcard.so auth required pam_opendirectory.so account required pam_permit.so password required pam_deny.so - [Вспомогательные bash скрипты для Docker](https://fritool.ru/bash-helpers-for-docker/) - Накидал несколько скриптов для удобства. MySQL #!/bin/bash CONTAINER_NAME='mysql-dev' ROOT_PASSWORD='123456' ACTION='start' if [ -n "$1" ] then ACTION=$1 fi echo 'Action: ' $ACTION; if [ $ACTION = 'start' ] then if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ] then echo 'Already run' fi if [ "$(docker ps -q -f name=$CONTAINER_NAME -a)" ] then echo 'Start' docker - [Brew вывод зависимостей](https://fritool.ru/brew-show-dependencies/) - Простой Bash скприт для отображение пакетов которые от чего либо зависят или нет. brew list -1 | while read lib; do echo -ne "\x1B[1;31m $lib \x1B[0m"; brew uses $lib --installed | awk '{printf(" %s ", $0)}'; echo ""; done Просто выполни это в консоли и получишь примерный результат: ansible apr apr-util php apr-util php argon2 - [Zend Framework: Начало начал](https://fritool.ru/zend-framework-begin/) - Ты еще мучаешься и в n—раз пишешь однотипные модули для сайта? Изобретаешь велосипед и пытаешься отделить дизайн проекта от кода? Ищешь реализацию необходимой функции в сомнительных форумах? Если на один из этих вопросов ты ответил да, то эта статья однозначно для тебя. В ней я расскажу тебе про мощный бесплатный фреймворк (Content Managment Framework), изучив - [PHPBU загрузка бэкапов на Яндекс Диск](https://fritool.ru/phpbu-upload-to-yanex-disk/) - В предыдущей статье я рассказывал о PHPBU. Сейчас хочу рассказать как можно выгружать файлы бэкапов на Яндекс Диск. Расширение PHPBU Необходимо создать файл - WebdavSync.php с таким кодом: - [Вышел ZendFramework 1.8.1](https://fritool.ru/vyshel-zendframework-181/) - Вчера вышел релиз Zend Framework 1.8.1 Zend Framework Full 1.8.1 zip tar.gz Zend Framework Minimal 1.8.1 zip tar.gz Документация скачать просмотреть Было исправлено 68 багов - [Подмена страниц - ВАШ БРАУЗЕР ЗАБЛОКИРОВАН!](https://fritool.ru/podmena-stranic-vash-brauzer-zablokirovan/) - На днях у знакомой была паника, она не могла попасть на сайт Яндекса. При попытке открыть сайт выходило сообщение — «ВАШ БРАУЗЕР ЗАБЛОКИРОВАН!». И для того что бы разблокировать не обходимо отправить СМС. Девушка не долго думая отправила СМС, и у нее со счета сняли 300 рублей :). Для девушки деньги не главное, лишь бы - [Плагин автоподключения стилей и JS для Zend Framework](https://fritool.ru/plugin-avtoload-css-and-js-zend-framework/) - Написал плагин для ZendFramework’a, который подключает стили и JavaScript’ы. Для плагина надо зарегистрировать в Zend_Registry два параметра: pathStyle — путь к стилям pathJS — путь к JavaScript’ам Плагин проверяет на существование файлы. Например мы обратились к странице fritool.ru/modules/controller/action/. Скрипт будет проверять следующие файлы на существование: pathStyle/modules.css pathStyle/modules/controller.css pathStyle/modules/controller/action.css pathJS/modules.js pathJS/modules/controller.js pathJS/modules/controller/action.js Код плагина: class Dev_Plugin_View - [PHPBU отличный бэкапер](https://fritool.ru/phpbu/) - Бэкапы наше все — PHPBU 😎 Мне нравится PHP и я не навежу зоопарк технологий, по этому использую PHP для всего, что можно автоматизировать 🙃 PHPBU — отличный бэкапер для ArangoDB, Elastic, MongoDB, MySQL, PostgresSQL, Redis, и файлов. Возможности PHPBU Создание бэкапов MySQL, ArangoDB, Elastic, MongoDB, MySQL, PostgresSQL, Redis и директорий Легкая настройка в форматах: JSON или XML Выгрузка созданных бэкапов: FTP, DropBox, AWS3 - [Как определить в каком знаке зодиака луна при помощи PHP](https://fritool.ru/moon-in-sign-zodiac/) - В каком знаке зодиака луна: определение при помощи PHP. - [SSL для сайта - HTTPS](https://fritool.ru/ssl-for-site/) - Пошаговая инструкция настройки HTTPS (SSL) для NGINX - [Перезагрузка блога](https://fritool.ru/blog-reboot/) - Обновил WP, удалил ненужные плагины Новый дизайн Несколько раз пытался писать посты в блоге, но не получалось. Хотелось писать идеальные статьи, но затягивалось, а потом и вовсе забивал. Попробую еще раз. Буду писать небольшие посты. 😊 - [Быстрый переводчик — QDictionary](https://fritool.ru/qdictionary/) - В английском языке я не силён, по этому приходиться пользоваться переводчиком. Пользуюсь QDictionary, это старенький, быстрый и бесплатный переводчик. Способный переводить только отдельные слова. Переводить можно просто наведя на слово или выделив слово и нажав сочетание клавиш. Скачать можно тут. - [Журнал VR для всех за май 2009](https://fritool.ru/zhurnal-vr-dlya-vsex-za-maj-2009/) - Скачать можно тут - [Высшее образование в России для программиста](https://fritool.ru/vysshee-obrazovanie-v-rossii-dlya-programmista/) - Сегодня общаясь с другом, мы затронули тему про высшее образование. Долго спорили нужно ли ВО программисту. В итоге пришли к тому, что ВО программисту нужно, но не обязательно по специальности. То есть программистом можно работать имея высшее образование Экономиста. А можно в обще не иметь высшее образование и работать программистом, но при этом скорее всего - [Скрин странички сайта во весь рост](https://fritool.ru/skrin-stranichki-sajta-vo-ves-rost/) - Если ты пользуешься Firefox’ом, то для того что бы сделать скрин во весь рост тебе поможет плагин Screengrab. После установки плагина в статусной строке появиться новая иконка. Версия 0.96.2 Работает с Firefox: 3.0 – 3.5.* Последнее обновление July 17, 2009 Разработчик Andy M Домашняя страница http://www.screengrab.org - [Лечимся от злобного вируса Kido](https://fritool.ru/lechimsya-ot-zlobnogo-virusa-kido/) - Для начала устанавливаем обновления для Windows: MS08-067, MS08-068, MS09-001 После качаем KidoKiller запускаем KK.exe. Ключи для запуска утилиты KK.exe из командной строки Параметр Описание -p Cканировать определённый каталог. -f Cканировать жёсткие диски. -n Cканировать сетевые диски. -r Cканировать flash-накопители, сканировать переносные жесткие диски, подключаемые через USB и FireWire. -y Не ждать нажатия - [Инвайты на google wave](https://fritool.ru/google-wave-invite/) - Есть не сколько инвайтов на волны. В коментах оставляйте адрес. - [Memcached в PHP - просто с Zend Framework](https://fritool.ru/memcached-v-php-prosto-s-zend-framework/) - Zend_Cache Memcached - [Вычисление возраста с помощью Zend_Date](https://fritool.ru/vychislenie-vozrasta-s-pomoshhyu-zend_date/) - < ?php class Fr_Date extends Zend_Date { public function getCountYear($date) { $date = new Fr_Date($date); $this->subYear($date->get(Zend_Date::YEAR)) ->subMonth((int)$date->get(Zend_Date::MONTH) - 1) ->subDay((int)$date->get(Zend_Date::DAY) - 1); return $this->get(Zend_Date::YEAR); } } - [Баг в eAccelerator с open_basedir](https://fritool.ru/bag-v-eaccelerator-s-open_basedir/) - Вчера настраивая eAccelerator на VPS столкнулся с проблемой связанной с open_basedir. В лог записывались следующие ошибки: PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s); PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s); Версия eAccelerator – 0.9.6.1 Решает этот баг исправлением одной строчки кода - [Массовое копирование элементов ИБ в админке 1C Bitrix](https://fritool.ru/massovoe-kopirovanie-elementov-ib-v-adminke/) - Появилась необходимость копировать элементы внутри ИБ в другой раздел. В Битриске можно копировать только по одному элементу, и это не удобно когда надо скопировать более ста элементов в другой раздел. Для начала нам надо добавить в список действий новое новое действие – «копировать». Открываем файл - /bitrix/modules/iblock/admin/iblock_element_admin.php, находим строку 1895. Там объявляет массив с событиями: - [Карта Яндекс.Денег](https://fritool.ru/karta-yandeks-deneg/) - Приехал домой и увидел конверт от Яндекс.Денги, с пластиковой картой MasterCard. Карту можно оформить бесплатно, после получения карты почтой России, карту необходимо активировать на сайте Яндекс.Денги. И последним этапом будет получение ПИН кода. Для того, что бы получить ПИН код необходимо позвонить по номеру 8 (800)-555-25-30, оператор спросит ваше Ф. И. О., четыре последних цифры карты, - [Алгоритм использования кодов HTTP заголовков](https://fritool.ru/algoritm-ispolzovaniya-kodov-http-zagolovkov/) - [PHP + DOCX](https://fritool.ru/php-docx/) - Подставляем значение в DOCX файл средствами PHP - [Feedly как отдельное приложение для Mac OS](https://fritool.ru/feedly-kak-otdelnoe-prilozhenie-dlya-mac-os/) - Mac OS X, Feedly, RSS читалка, Feedly Applications - [Софт который использую каждый день](https://fritool.ru/soft-kotoryj-ispolzuju-kazhdyj-den/) - Самым главным инструментов для меня является PhpStorm от JetBrains: Для работы с MySQL использую Sequel Pro: Для быстрых правок пользуюсь Sublime 2: Monosnap для создания и шаринга скринов: Пробовал разые FTP клиенты, остановился на ForkLift: nvAlt - удобный блокнот с поиском заметок: А еще VirtualBox, TrueCrypt для хранение паролей, DropBox. - [PHP Instragram Api](https://fritool.ru/php-instragram-api/) - Наконец то дошли руки до instaliga.com, сейчас разрабатываем вторую версию. Instaliga – это WEB интерфейс для Instagram. Работающий без авторизации в Instagram. Решили переписать проект на ZF2. Для работы с API Instagram не хотелось изобретать велосипед, и нашел готовую либу PHP-Instagram-API. Так же эта либа есть для Composer на packagist.org. Пришлось оптимизировать некоторые запросы к API, добавил ## Рубрики - [Архив](https://fritool.ru/category/archive/) - [Symfony](https://fritool.ru/category/symfony/) - [Перевод](https://fritool.ru/category/translation/) - [PHP](https://fritool.ru/category/php/) ## Метки - [Zend Framework](https://fritool.ru/tags/zendframework/) - [JavaScripts](https://fritool.ru/tags/javascripts/) - [CSS](https://fritool.ru/tags/css/) - [Memcached](https://fritool.ru/tags/memcached/) - [Zend_Cache](https://fritool.ru/tags/zend_cache/) - [Zend_Date](https://fritool.ru/tags/zend_date/) - [eAccelerator](https://fritool.ru/tags/eaccelerator/) - [yandex](https://fritool.ru/tags/yandex/) - [http](https://fritool.ru/tags/http/) - [phpstorm](https://fritool.ru/tags/phpstorm/) - [ZFTool](https://fritool.ru/tags/zftool/) - [phar](https://fritool.ru/tags/phar/) - [PHP](https://fritool.ru/tags/php/) - [1C Bitrix](https://fritool.ru/tags/1c-bitrix/) - [ssl](https://fritool.ru/tags/ssl/) - [https](https://fritool.ru/tags/https/) - [nginx](https://fritool.ru/tags/nginx/) - [curl](https://fritool.ru/tags/curl/) - [webdav](https://fritool.ru/tags/webdav/) - [bash](https://fritool.ru/tags/bash/) - [backups](https://fritool.ru/tags/backups/) - [phpbu](https://fritool.ru/tags/phpbu/) - [docker](https://fritool.ru/tags/docker/) - [mysql](https://fritool.ru/tags/mysql/) - [redis](https://fritool.ru/tags/redis/) - [rabbitmq](https://fritool.ru/tags/rabbitmq/) - [brew](https://fritool.ru/tags/brew/) - [macos](https://fritool.ru/tags/macos/) - [macbookpro](https://fritool.ru/tags/macbookpro/) - [terminal](https://fritool.ru/tags/terminal/) - [Touch ID](https://fritool.ru/tags/touch-id/) - [Symfony](https://fritool.ru/tags/symfony/) - [New in Symfony](https://fritool.ru/tags/new-in-symfony/) - [logs](https://fritool.ru/tags/logs/) - [twig](https://fritool.ru/tags/twig/) - [Doctrine](https://fritool.ru/tags/doctrine/) - [PHPUnit](https://fritool.ru/tags/phpunit/) - [Bootstrap](https://fritool.ru/tags/bootstrap/) - [Cache](https://fritool.ru/tags/cache/) - [UUID](https://fritool.ru/tags/uuid/)