Пишем На Php… Статически

PHP — это динамически неявно слабо типизированный язык.

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

Я, как и многие PHP-программисты, думал, что статическая типизация — это «сложность».

Это ограничивает гибкость и вообще: как люди с этим работают? И я искренне не понимал, почему многие опытные программисты предпочитают языки со статической типизацией и строгой проверкой типов.



Пишем на php… статически

Я принадлежал к правой половине людей, которые мало знают о типах, но при этом искренне считают, что это не удобно.

И так было до тех пор, пока я близко не познакомился с одним из строго типизированных языков (C#).

С тех пор мое отношение к PHP и программированию в целом изменилось.

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

Те.

компилятор уже на 100% уверен, какой тип где находится.

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



Зачем все это нужно в PHP?

Изучая C# и одновременно осваивая продукт, для которого ставились задачи, не имея достаточного опыта и документации (вернее, документации вообще не было), мне помогло то, что благодаря строгой типизации большинство ошибки устранялись немедленно, а еще большим преимуществом были подсказки IDE, выдаваемые на основе заданных типов.

Мне не нужна была документация, чтобы понять, что и куда передавать, я не мог сделать ничего неправильного, оно просто не компилировалось! Это значительно сократило время, поскольку вы сразу видите, что этот метод принимает только такие параметры, и создавая объекты для этих параметров, вы узнаете, каких ссылок не хватает для их построения и так далее.

«Окей, это действительно удобно, — скажете вы, — но вы же нам ничего нового не сказали, в PHP есть PHPDoc, который понимает большинство современных IDE, а также помогает писать код на лету!» Всё верно, но чтобы это работало так же, как и в статически типизированных языках, необходимо не только написать комментарий для каждого метода и свойства класса, но важно, чтобы вся архитектура была адаптирована для работы с ранее известными объектами.

Чтобы построить такую архитектуру, нужно придерживаться определенных правил.

Это те, о которых я хотел бы поговорить дальше.



Используйте объекты вместо массивов

Да, точно.

В общем, эта истина не нова и о ней много написано: объекты легче расширять, к ним легче добавлять методы и вообще дорога к ООП.

Но я хочу посмотреть на этот вопрос с другой стороны — с точки зрения построения правильной архитектуры для эффективного программирования.

Давайте посмотрим на простой пример: Допустим, в системе происходит событие, и нам необходимо передать обработчику определенные параметры.

Для этого мы используем массив:

   

$eventData = array(

Теги: #php #phpdoc #эффективность #печать #SPL #php
Вместе с данным постом часто просматривают: