Защита своего сервера. Полезные мелочи.

PHP.INI
Первым делом, лезем в /etc/php5/fpm/php.ini и раскомментируем строку cgi.fix_pathinfo, задав ей параметр 0 (вместо 1 по умолчанию). Тем самым закроем потенциальную брешь безопасности, дабы php открывал исключительно путь который мы ему зададим, а не пытался импровизировать помогая пользователю.

Строки в PHP — Heredoc

Heredoc

Третий способ определения строк в PHP — это использование heredoc-синтаксиса: <<<. После этого оператора необходимо указать идентификатор, затем перевод строки. После этого идет сама строка, а потом этот же идентификатор, закрывающий вставку.

Строка должна начинаться с закрывающего идентификатора, т.е. он должен стоять в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания, и не должен начинаться с цифры (знак подчеркивания разрешается).
Читать далее

Файлы Bootstrap на CDN равно BootstrapCDN

Для уменьшения и распределения нагрузки на свой сайт используем файлы от Bootstrap с его CDN. Для этого идем на BootstrapCDN и копируем нужные нам ссылки.
Теперь меняем в своём проекте

<link href="css/bootstrap.min.css" rel="stylesheet">
...
<script src="js/bootstrap.min.js"></script>

на

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
...
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

Так же, если вы используете иконки от Font Awesome, можете воспользоваться CDN и для данного файла стилей.

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">

Замеряем время загрузки сайта

Немаловажным в оптимизации сайта является время его загрузки. По одной из статистик пользователь сможет ожидать загрузки около 30 секунд, после чего он просто закрывает «тяжелую» страницу. Чтобы сделать свой сайт быстрее не нужно быть гением, достаточно просто проанализировать какие из ресурсов тормозят загрузку. Я предлагаю пользоваться отличным сервисом http://tools.pingdom.com. Полезен он тем, что не только позволяет посмотреть время загрузки сайта, но и точно покажет какой ресурс вашего сайта загружался дольше.
tools_pingdom_com
Если вы серьезно заинтересованы в хорошей внутренней оптимизации, то этот сервис будет вам просто необходим!

Как правильно составить Title, Description и Keywords

Тег title и мета-теги description и keywords — играют исключительную роль в раскрутке сайта. От их правильного составления во многом зависит положение страницы в поисковой выдаче. Элементы title, description и keywords должны обязательно присутствовать на каждой странице сайта и содержать ключевые фразы:
Правильно составить Title, Description и Keywords
Роботы поисковых систем придают большое значение содержимому title и description, особенно тегу title для определения релевантности страницы — соответствию пользовательского запроса к ее содержимому. Но есть и второй фактор, который нужно учитывать, он приносит дополнительный эффект в раскрутке сайта — это восприятие пользователей.
Читать далее

PHPStorm: Полезные мелочи

Синхронное редактирование HTML тегов
Для ускорения правки одинаковых HTML тегов можно настроить синхронную правку. Для этого нужно в настройках включить параметр: Preferences | Editor | General | Smart keysSimultaneous editing.
html-tag-editing

Магические методы в PHP5

Так получилось что в ООП функции называют — методами а переменные — свойствами. В PHP5 существует несколько полезных методов несущих в себе «магический» функционал о них сейчас и пойдет речь.
Все методы начинающиеся с __ PHP считает «магическими».
__construct() — метод конструктор, если он объявлен в классе то он будет вызываться при каждом создании объекта. Может принимать одно или несколько свойств.
__destruct() — деструктор вызывается при освобождении всех ссылок на объект в котором он находится или по завершению работы скрипта. Не может принимать свойства.
__get() — будет выполнен при чтении данных из недоступных свойств.
__set() — будет выполнен при записи данных в недоступные свойства.
__isset() будет выполнен при использовании isset() или empty() на недоступных свойствах.
__unset() будет выполнен при вызове unset() на недоступном свойстве.
__toString() — позволяет написать реакцию класса при возведении его в строку.
__invoke() — вызывается когда скрипт выполняет объект как функцию.
__clone() — клонирует объект.
Читать далее

Исключения в PHP

Модель исключений (exceptions) в PHP 5 проще, чем в других языках программирования. Исключение можно сгенерировать (как говорят, «выбросить») при помощи оператора throw, и можно перехватить (или, как говорят, «поймать») оператором catch. Код выбрасывающий исключение, должен быть окружен блоком try, для того чтобы можно было перехватить исключение. Каждый блок try должен иметь как минимум один соответствующий блок catch. Так же можно использовать несколько блоков catch, перехватывающих различные классы исключений. Нормальное выполнение (когда не генерируется исключений в блоках try или когда класс выброшенного исключения не совпадает с классами, объявленными в соответствующих блоках catch) будет продолжено за последним блоком catch. Исключения так же могут быть сгенерированны (или перегерерированы — т.е. выброшены снова) оператором throw внутри блока catch.

При генерации исключения, код следующий ниже оператора throw исполнен не будет, а PHP предпримет попытку найти первый блок catch, перехватывающий исключение данного класса. Если исключение не будет перехвачено, PHP выдаст сообщение об ошибке: «Uncaught Exception …» (Неперехваченное исключение), если конечно не был определен обработчик ошибок при помощи функции set_exception_handler().
Читать далее