您如何让IDE识别来自使用字符串实例化类的PHP工厂的用法?
作者:互联网
我喜欢在大多数情况下如何使用工厂模式来帮助您坚持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
*/
那是唯一的方法吗?
解决方法:
使用docblocks来键入您的类属性是处理此问题的最佳方法.我已经使用zend2已有一段时间了,除了typehinting类构造函数参数之外,向每个属性添加docblock是唯一的方法,因为通常当您从工厂获取实例时,会使用某种ServiceLocator,通过参数,将接收要实例化的工厂的名称以及它的字符串,因此您的IDE无法将字符串与实际类相关联.
标签:factory-pattern,solid-principles,php 来源: https://codeday.me/bug/20191028/1951371.html