【发布时间】:2017-09-21 11:26:11
【问题描述】:
我的问题和标题说的基本一模一样。
我在玩 TypeScript 有一段时间了,有一种简单的方法可以定义对象的结构,即定义接口内部的属性。我知道 PHP 不支持接口中的属性,但是有没有办法以某种方式定义我传递的对象的结构(不使用一些抽象类)或至少是数组(需要在里面显示哪些键) .
我的意思是:
// I already sanitized that this method returns the exact same structure every time
$data = $this->storage->get($some);
// here I'm passing the data I obtained to my Builder
Builder::createFromArray($data);
// or
Builder::create($data);
class Builder {
public static function createFromArray(\ArrayOfSomeType $array) {}
public static function create(\ObjectOfSomeTypeWithPropertiesSpecified $obj) {}
}
希望我解释清楚。
【问题讨论】:
-
为什么不使用类?
-
您正在努力从 PHP 中的另一种语言复制一种语言结构。我认为这种方法是有缺陷的。 PHP 是一门不同的语言,从头开始。阅读如何使用它。例如这里:php-fig.org
-
没有开箱即用的解决方案。您可以使用json schema 定义数组的结构并将其应用于 PHP 数组(json_encode / decode 等)。您已经熟悉 JS,所以我认为没有问题。 Json Schema 也非常简单。
-
您可能会打开
stdClass,因为它是一个泛型类类型,但它不用于与 OO 相关的目的。但在其中包含数据很有用,几乎与使用 JSON 一样。 -
感谢大家的建议。我可能会创建一个模型类,它能够从我传递给构造函数的数组中创建自己,然后我将创建我将它注入到我的 Builder 类中。我想这样使用会更干净。 @KIKOSoftware 我没有努力,我只是想问是否有任何方法可以做到这一点,因为它更干净而且我在文档中找不到任何内容,感谢您提供的链接,看起来不错。