我很难从PHP源代码创建一个UML类图.

我有以下代码:

   abstract class DataSource
{
    public function toReferences():array
    {
        $fields = [];
        $keys = $this->getPropertyNames();
        foreach( $keys as $key ){
            $fields[] = &$this->$key;
        }
        return $fields;
    }

    public function getPropertyNames():array
    {
        return array_keys( get_object_vars( $this ) );
    }
}

The function toReferences returns an array (collection) of property references.
Every property can be of a different datatype.
I'm not sure if I could use the well-known pseudotype "mixed" from the php documentation.
If so would this be a correct UML notation?

+toReferences:&mixed[]

推荐答案

无限大小的数组实际上通常在编程语言中实现具有重数*的UML属性

如果您想知道将使用什么类型或超类型,您应该在您的UML模型中尽可能具体地引用已知类型,而不管实现语言没有强类型的事实.但是,如果您设计意图确实是要具有该语言的任何可能类型,则可以引用该语言的公共超类型(如果有).在PHP中,它确实是mixed.请注意,标准的UML不知道特定于语言的类型,但您可以将它们用于特定于语言的概要文件.

因此,您的函数的文本表示法为:

+toReferences(): mixed[*]

在统一建模语言中没有与&参考等同的东西.UML具有类的引用语义和数据类型的值语义,但其中的差异非常微妙,被许多建模师忽略了.如果这对您的建模很重要(例如,如果您使用UML来详细记录您的代码,而不是使用它来表达底层设计),您可以考虑在您的语言概要文件中定义一个您将放在类型前面的构造型«reference».

Php相关问答推荐

Laravel:让所有用户在一年中的特定月份休息几天

如何在函数中定位WooCommerce产品循环

为什么正则表达式与得到的文本块之前得到的也行?

闭包绑定$This和垃圾收集器

Laravel POST方法返回状态:POST方法上不允许使用405方法

在PHP中循环访问多维数组,并按组显示内容

通过访问单个产品页面更新WooCommerce产品元数据

如何在execute语句中使用存储过程参数?

Laravel区分大小写搜索

针对给定产品类别的WooCommerce计数审核

在指定的约束内使用随机量填充数据集

升级到PHP 8.2后无法删除cURL Cookie文件

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

在 WooCommerce 更新结帐事件上动态更新自定义内容

关于Laravel缓存出现的错误

invalid_grant 和无效的 JWT 签名

在 WooCommerce 管理变量产品中启用其他变体图像

Woocommerce注册中的自定义复选框验证错误提示问题

仅允许减少 WooCommerce 中已完成订单的库存数量

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?