编程语言
首页 > 编程语言> > 您如何让IDE识别来自使用字符串实例化类的PHP工厂的用法?

您如何让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