标签:factory-pattern solid-principles 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。