Как создать собственный контейнер внедрения зависимостей на PHP

  • PHP
  • 1 месяц назад

На запрос «контейнер внедрения зависимостей» packagist.org выдает более 95 страниц результатов. Так что можно с уверенностью утверждать, что это «колесо» уже изобретено.

Но ни один шеф-повар не учится готовить только по готовым блюдам. Точно так же, программист не учится только по «готовому коду».

Давайте подумаем, какие задачи мы хотим поручить нашему будущему контейнеру. Для начала выделим в «Контейнере внедрения зависимостей» две роли – «внедрение зависимостей» и «контейнер».

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

Размер шрифтов в CSS: em, px, pt или percent?

  • CSS
  • 10 месяцев назад

Применение атрибута font-size для масштабирования текста является одним из самых сложных аспектов стилевого оформления в CSS. CSS предлагает четыре единицы для измерения размера текста, отображаемого в веб-браузере. Какая из этих четырех единиц наиболее подходит для веб-документов? Этот вопрос вызвал множество обсуждений и споров. Дать однозначный ответ на такой вопрос сложно.

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

Путеводитель по Symfony: Диспетчер событий

  • Symfony
  • 10 месяцев назад

В этом путеводителе мы будем рассматривать автономные библиотеки (также известные как «Компоненты»), предлагаемые Symfony для создания приложений.

Symfony предлагает компонент EventDispatcher, который позволяет выполнять основные зарегистрированные функции в нашем приложении.

Все основывается на следующем интерфейсе:

<?php

namespace Symfony\Component\EventDispatcher;

interface EventDispatcherInterface
{
    /**
     * @param string   $eventName
     * @param callable $listener
     * @param int      $priority  High priority listeners will be executed first
     */
    public function addListener($eventName, $listener, $priority = 0);

    /**
     * @param string $eventName
     * @param Event  $event
     */
    public function dispatch($eventName, Event $event = null);
}
Читать далее...

Путеводитель Symfony: Компонент HTTPKernel

  • Symfony
  • 10 месяцев назад

В этом руководстве мы рассмотрим основные компоненты, с помощью которых создаются приложения:

  • HTTP Kenel и HTTP Foundation
  • Диспетчер событий
  • Маршрутизация и YAML
  • Внедрение зависимости
  • Консоль

Symfony предоставляет компопонет HttpKernel который реализует протокол HTTP: он конвертирует Request в Response.

Все вращается вокруг следующего интерфейса:

<?php

namespace Symfony\Component\HttpKernel;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

interface HttpKernelInterface
{
    const MASTER_REQUEST = 1;
    const SUB_REQUEST = 2;

    /**
     * @param Request $request
     * @param int     $type
     * @param bool    $catch   Whether to catch exceptions or not
     *
     * @return Response
     */
    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
}
Читать далее...

Микрофреймворк Symfony

  • Symfony
  • 10 месяцев назад

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

Существует множество критериев, за счет которых фреймворк классификацируется как «микрофреймворк». Вот некоторые из них:

  • небольшой API (использование кода фреймворка в вашем приложении)
  • мало строк кода (LOC)
  • мало зависимостей (количество используемых сторонних библиотек)
  • небольшой объем (время загрузки фреймворка)
Читать далее...

Руководство по модульному тестированию. Часть V: имитирующие методы и переопределение конструкторов

  • PHP
  • 11 месяцев назад

В предыдущем уроке по PHPUnit вы познакомились с такими эффективными инструментами, как имитирующие объекты и методы-заглушки. Эти понятия являются залогом успешного модульного тестирования, и как только они «улягутся» у вас в голове, вы начнете понимать, насколько полезным и простым может быть тестирование.

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

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

Руководство по модульному тестированию. Часть IV: Имитирующие объекты, методы-заглушки и внедрение зависимости

  • PHP
  • 11 месяцев назад

В предыдущих статьях я показал вам, как писать базовые тесты для базовых методов. Теперь вы можете пользоваться аннотацией @dataProvider, создавать отчеты о покрытии, и знаете, как пользоваться отдельными утверждениями.

До этого мы писали тесты для простых методов. Вызов внутреннего метода в рамках одного и того же класса, вставка блока if, но ничего особо сложного.

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

Установка Wordpress на Ubuntu 14.04

На данный момент WordPress является самой популярной CMS (системой управления контентом) в Интернете. С ее помощью можно с легкостью создавать гибкие блоги и вебсайты на сервере MySQL с PHP-обработкой. Пользуясь огромной популярностью, WordPress это отличный способ быстро настроить и запустить вебсайт.

В этой статье мы рассмотрим установку экземпляра WordPress с веб-сервером Apache на Ubuntu 14.04. Необходимые условия

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