【发布时间】:2013-01-09 17:06:09
【问题描述】:
假设我有一个包含几十个属性的类的实例。此类不能修改或扩展。
我现在需要将一些数据从这个实例传递给一个函数。该函数只需要其中一些属性,它不能直接使用类的实例(它需要一个关联数组),并且还需要一些实例中不存在的数据。所以我需要将实例转换为关联数组。
例如我需要转换这个:
class Person {
public $id = 123;
public $firstName = "John";
public $lastName = "Something";
public $address;
public $city;
public $zipCode;
// etc.
}
到这里:
array(
'id' => 123,
'name' => 'John Something'
);
我的问题是:是否有任何已知的 OOP 模式来处理这种转换?我知道我可以编写一个简单的函数来从一种格式转换为另一种格式,但我想知道“正确”的方法是什么,如果可能的话基本上使用已知的模式。
【问题讨论】:
-
这听起来可能离题了。但我很好奇你为什么把 $ 放在变量名之前。
-
我认为使用反射迭代对象的属性是解决此类问题的一种很好的通用方法。
-
抱歉,没有看到 PHP 标签。
-
@davioooh,示例代码在 PHP 中,但我想我的问题是语言中立的,一般来说是关于 OOP 模式。
标签: php oop design-patterns