Сильно набрано против слабо набрано - PullRequest
0 голосов
/ 23 октября 2019

Недавно я был назначен разработчиком в проекте, который использует PHP-бэкэнд. С предыдущим опытом работы со строго типизированными языками, такими как C #, мне было тяжело. В C # проще: -

  • Найти все ссылки
  • Лучший опыт отладки
  • Знать, какой тип объекта следует ожидать

и многие другие ...

Я знаю преимущества такого слабо типизированного языка, как JavaScript, который открывает множество возможностей для его использования. Но когда у вас есть бизнес-логика с бизнес-объектами, я бы предпочел строго типизированный язык.

Мой реальный вопрос: есть ли у вас что-то вроде этого: -

public function saveEntity($externalId, $layer, $sign = null, $user= null, $pass = null) {

Как я могу это сделать? узнать, что содержит $ layer без необходимости читать все строки кода перед вызовом этой функции? Есть ли хитрость в таких местах, где важно определить тип объекта?

1 Ответ

4 голосов
/ 23 октября 2019

Два подхода.

Вы можете использовать phpdoc для аннотирования ваших методов и переменных:

/**
 * @param int $externalID
 * @param Layer $layer
 * ...
 * @return boolean
 */
public function saveEntity($externalId, $layer, $sign = null, 
                           $user= null, $pass = null) { ... }

Или просто написать тип в объявлении метода (требуется PHP> = 7):

public function saveEntity(int $externalId, Layer $layer, $sign = null, 
                           $user= null, $pass = null): boolean { ... }

Или, предпочтительно, используйте оба.

Постоянное выполнение этого в вашем коде дает вам все, что вам нужно, и в то же время пожинает плоды динамического языка. Ваша IDE может затем выполнить рефакторинг, найти использование и выдать предупреждения и т. Д.

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