我很难从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相关问答推荐

使用箭头函数语法时,在回调范围内无法访问变量变量(警告:未定义的变量)

WooCommerce在store 页面上显示兼容多语言的产品属性

PHP中的圆生成器在国际日期变更线上失败

将一个情态形式放在细丝v3中的形式中间

在WooCommerce中添加特定产品类型的百分比费用和固定费用

如何在微软图形API中使用用户S访问令牌或基于租户ID的访问令牌?

如何使用barryvdh/laravel-Snappy在两个打印页面上将表格分成两部分?

从字符串转换日期和/或时间时,Laravel转换失败

Laravel自定义验证规则更正

需要以一种形式执行两个操作

woocommerce checkout 页面上的自定义字段

Laravel 添加到经过身份验证的用户的数据将应用于每个查询

WooCommerce 订单和邮箱通知的自定义产品描述

Shopware 6 AuthControllerDecorator已弃用

如何在WooCommerce管理产品列表中显示运输类别列

PHP使用三元运算符进行null合并(再次)

WooCommerce - 调用功能ID不正确.不应直接访问订单属性

Shopware 6:无法在新的自定义插件中保存关联字段(媒体)

使用数组输出 PHP 中的变量(按顺序)

esc_html 的使用有多重要,应该在什么时候使用?