【发布时间】:2016-05-20 09:37:53
【问题描述】:
我想将我的类对象转换为数组。我已经问过一个关于如何将对象转换为数组的问题。
但是在这样做的时候,我想知道我们是否可以这样做:
$arrObj = (数组) $objectOfMyClass;
据我所知,它会将对象转换为数组,但如果有一些用户定义的函数,我可以在其中控制此行为并允许少数成员作为数组键传递。
例如,假设我有一堂课:
class Property {
private $x;
protected $y;
public $z;
public function someFunction() {
//some code
}
public function someFunction1() {
//some code1
}
}
$objArray = (array) (new Property());
echo '<pre>', print_r($objArray, true), '</pre>';
输出:
Array
(
[Propertyx] =>
[*y] =>
[z] =>
)
但我不想要这个输出我想改变这个输出并想要这样的输出:
Array
(
[z] =>
)
或
Array
(
[y] =>
[z] =>
)
所以当有人试图像这样type cast我的类对象时,我必须有某种方法可以调用用户定义的函数:
class Property {
....
....
public function __toArray() {
return <'only public or protected members'>
}
}
当有人使用以下语句时:
$objArray = (array) (new Property());
它应该调用__toArray 方法。和__toString一样。
如果有人知道任何方法可以做这样的事情,请帮助我。
如果有任何其他可能导致相同输出的解决方案将非常有帮助。
提前致谢。
【问题讨论】:
标签: php arrays oop casting magic-methods