【发布时间】:2011-01-02 07:27:09
【问题描述】:
我有一个简单的“维度”类,其中包含一个宽度/高度属性和一个用于设置它们的构造函数。
我有一个函数(重新调整尺寸),它需要两个维度对象——一个要重新调整大小,一个包含最大大小。它应该减少第一个参数中的尺寸,以便它们“适合”第二个参数。
然后它返回第一个新调整大小的。
调用者传入维度对象并将返回值放入另一个对象——因为它必须保留原始对象。但是传递给函数的那个会被修改。
这很令人惊讶,因为我没有参考它:
private function scale_image_dimensions(Dimensions $dimensions, Dimensions $max_size) {
if( $dimensions->width > $max_size->width ) {
$dimensions->height = $dimensions->height / ($dimensions->width / $max_size->width);
$dimensions->width = $max_size->width;
}
if( $dimensions->height > $max_size->height ) {
$dimensions->width = $dimensions->width / ($dimensions->height / $max_size->height);
$dimensions->height = $max_size->height;
}
return $dimensions;
}
如何指定我希望函数复制传递给它的对象,然后返回其中一个?
更新
似乎还有其他问题——我将参数从$dimensions 更改为$adimensions,并将$dimensions = $adimensions 放在函数的开头。
但是调用者的变量仍然被修改了!分配是否也可以通过引用进行?我的意思是...没有办法使赋值运算符重载或复制构造函数,所以...我该怎么办?如果我想要一份副本,我必须每次显式初始化一个?
【问题讨论】:
标签: php function reference object