фабричный шаблон — Как вы можете заставить вашу среду IDE распознавать использования на фабриках PHP, которые используют строки для создания экземпляра класса?

Мне нравится, что в большинстве случаев вы можете использовать Factory Pattern, чтобы помочь вам придерживаться разработки SOLID. Одна вещь, которую я не совсем понимаю, это как заставить вашу IDE распознавать использование, когда вы строите свои фабрики. Например:

<?php

class ProductFactory {

public static function build($product_type, $name) {
$productClass = 'Product' . ucwords($product_type);
if (class_exists($productClass)) {
return new $productClass($name);
} else {
throw new Exception("Invalid product type given.");
}
}

}

Моя IDE не распознает $ productClass как использование для данного класса, потому что он может быть экземпляром нескольких классов. Я это понимаю. Тем не менее, как я могу сказать своей IDE, где найти эти использования? Нужно ли перечислять ВСЕ из них в докблоке?

/**
* @var ProductSofa $class
* @var ProductChair $class
*/

Это единственный способ?

3

Решение

Использование docblocks для указания свойств вашего класса — лучший способ справиться с этим. Я уже давно пользуюсь zend2, и кроме параметров конструктора классов для набора текста, добавление docblock к каждому свойству является единственным способом, потому что обычно, когда вы получаете экземпляр с фабрики, вы используете какой-то ServiceLocator, который Параметр, получает имя фабрики, которую вы хотите создать, и его строку, так что ваша IDE не может связать эту строку с реальным классом.

2

Другие решения

Поскольку для этой функции нет стандартного PHPDoc, вам понадобится решение, специфичное для IDE. Если вы используете PHPStorm или IntelliJ IDEA, они имеют встроенная поддержка документирования типов возврата фабричного метода, который может быть дополнительно усилен этот плагин.

2

По вопросам рекламы [email protected]