2

在 PHP 中,我需要通过引用将一些参数传递给函数。我不想为类似的行为编写 2 种不同的方法。所以我需要通过参数选择行为。但我不能通过引用传递null 。所以我创建了一个虚拟数组。

所以我要么通过

    $temp[0]=-1;
    $this->doSomething($bigIds, $temp);
or
    $temp[0]=-1;
    $this->doSomething($temp, $smallIds);


public function doSomething(&$bigIds, &$smallIds) {
        if ($bigIds[0] != -1) {
             // make some thing
        }
        if ($smallIds[0] != -1) {
             // make some thing
        }
}

有没有更好/优雅的方法来做到这一点?

4

2 回答 2

2

可能有很多事情你可能更愿意做,例如@ad7six 在评论中所说的,你也可以给它某种设置和一个数组..

public function doSomething(&$bIds, $mode) {
   switch($mode){
      case 1: do smallthing;break;
      case 2: do bigthing;break;
      case 3: do both;break;
      default: do nothing;break;
}

这一切都取决于你真正需要什么

于 2012-05-03T20:14:32.860 回答
2

我会建议一个枚举,但这是 PHP。所以这应该为你做:

class YourClass
{
    const DoSomethingSmall = 0;
    const DoSomethingBig = 1;

    public function doSomething(&$ids, $actionType) {
        // can also use a switch here
        if($actionType == self::DoSomethingSmall) {
            // do small
        }
        else if($actionType == self::DoSomethingBig) {
            // do big
        }
    }
}

然后你可以这样做:

$this->doSomething($bigIds, self::DoSomethingBig);
$this->doSomething($smallIds, self::DoSomethingSmall);

在课堂之外,您可以使用YourClass::DoSomethingBigYourClass::DoSomethingSmall

于 2012-05-03T20:15:27.313 回答