Статьи


Блог о веб-разработке от разработчика

В PHP 5 и более ранних версиях, обработать фатальную ошибку и продолжить работу программы было невозможно. При возникновении ошибки, программа просто прекращала свою работу без возможности что-либо сделать. Появление PHP 7 дало возможность программистам перехватывать фатальные ошибки, и обрабатывать их как обычные исключения (Exceptions).

Как это работает?

При возникновении фатальной ошибки (E_ERROR) или ошибки с возможностью обработки (E_RECOVERABLE_ERROR) будет выброшено специальное исключение типа Error которое в свою очередь реализует интерфейс (Throwable). 

interface Throwable {
  /* Methods */
  abstract public string getMessage ( void )
  abstract public int getCode ( void )
  abstract public string getFile ( void )
  abstract public int getLine ( void )
  abstract public array getTrace ( void )
  abstract public string getTraceAsString ( void )
  abstract public Throwable getPrevious ( void )
  abstract public string __toString ( void )
}

Из этого следует, что оба класса (Exception и Error) теперь реализуют один и тот же интерфейс Throwable.

Класс Error не является наследником класса Exception.

Это сделано для того, чтобы не сломать обратную совместимость после перехода на PHP 7. Таким образом, исключение типа Error не будет случайно обработано в проекте, написанном на PHP 5.*.

Примеры и разъяснения в продолжении статьи ...

Цели на неделю

  1. Написать 2 статьи в блог [2/2]

    Обработка ошибок в PHP 7

    NoSQL базы данных: когда следует использовать?

  2. Прочитать 150 страниц из книги С. Макконнелла "Идеальный код" [150/150]

    Вот этот пункт, неожиданно, стал для меня одним из самых трудных. Я не могу назвать себя книжным червём, но и отвращения к книгам никогда не испытывал (тем более к технической литературе). Так вот, труд С. Макконнелла "Идеальный код" - это явно не то, что можно лайтово почитать перед сном. Приходится вдумываться практически в каждое предложение, а к концу абзаца я с лёгкостью могу поймать себя на мысли: "Что, *лять, я сейчас прочитал?". Но не поймите меня неправильно, книга действительно достойная. Просто, по всей видимости, я, как разработчик, пока до неё не дорос.

  3. Найти информацию о том, как правильно собирать СЯ [1/1]

    Статью нашёл и осилил. В принципе, в теории нет ничего трудного. Во-первых, необходимо продумать и написать собственный список ключей. Можно подсмотреть ключи у конкурирующих сайтов, или выпадающие подсказки у поисковиков. Далее следует прогнать ключи в Key Collector'е (специальная программа для создания семантического ядра), чтобы получить полный список ключевых фраз. Ну и, наконец, отфильтровать всё это безобразие. Убрать высокочастотные ключи и ключи, которые нам не подходят по тематике. Также следует избавиться от слишком дорогих, и, соответственно, высококонкурентных ключей, по которым мы никогда не попадём в топ. Дальше пляшем от нашего списка ключей: пишем статьи, готовим лендинги. Но это уже совершенно другая история ...

andymarrel 23.11.2015 14:53 в Личное

Что нам понадобится?

Для комфортной работы с изображениями в PHP, нам понадобится библиотека GD. Возможно, ваша версия PHP уже имеет библиотеку GD. Проверить её наличие можно запустив следующий код:

// true - библиотека уже установлена
// false - библиотеки нет, её нужно установить
var_dump(function_exists('imagetypes'));

Если по какой-то причине у вас не установлена GD, вот руководство как это сделать - http://php.net/manual/ru/image.installation.php.

Что можно делать с помощью GD?

Библиотека предоставляет широкие возможности для работы с изображением:

  • получение информации об изображении (размер, расширение, MIME тип)
  • создание нового изображения
  • рисование различных фигур (эллипсы, прямоугольники, многоугольники, линии, точки и т.д.)
  • заливка цветом
  • загрузка шрифтов и работа с текстом на изображении
  • конвертирование изображения в другой формат

Это далеко не весь список функций. Подробнее с функциями можно ознакомиться на официальном сайте PHP - http://php.net/manual/ru/book.image.php

Примеры в продолжении статьи.

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

Далее Вы можете ознакомиться с ключевыми мыслями из книги, которые я для себя вынес.

Многие современные утилиты, которые программисты используют в своих проектах, требуют версию PHP не ниже 5.6. Для того, чтобы обновить PHP до версии 5.6 в Ubuntu 14.04 LTS, введите последовательно следующие команды в терминале:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php5-5.6
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5

Теперь можно проверить текущую версию PHP командой php -v. Обратите внимание на то, что мы обновляем PHP не из официального репозитория Ubuntu. В некоторых случаях это может привести к неожиданным последствиям. Так в новой версии PHP могут отстутсвовать некоторые модули, которые вы используете в проекте.

andymarrel 08.10.2015 10:38 в Адм. серверов

"Совершенный Код" Стива Макконнелла, является одной из самых популярных книг среди программистов со всего мира. А так как во мне ещё не умерла надежда создать 2-ой Фейсбук, я не мог обойти данную литературу стороной. В этой записи я расскажу о ключевых моментах из первой части книги:

  • Из чего состоит процесс разработки ПО
  • Чем конструирование ПО отличается от разработки
  • Предварительные требования разработки

 Далее обо всём по порядку ...

В предыдущей статье о паттернах проектирования, я описывал шаблон Фасад, который помогает определить более простой интерфейс доступа к какому-либо функционалу. Данную же статью я посвящаю другой небезызвестной фигуре в кругах архитекторов ПО - декоратору!

Определение

Декоратор - это структурный шаблон проектирования, который предназначен для расширения функционала объекта, без применения наследования.

Декоратор является обёрткой для оригинального класса, что позволяет добавить новый функционал без прямого воздействия на оригинальный класс (в примере станет понятно о чём идёт речь).

Пример далее ...