PHP:将实例变量设置为函数

时间:2018-08-12 02:26:22

标签: php functional-programming

我正在实现一个BinaryHeap类,该类应该采用一个$type参数来确定堆是最大堆还是最小堆。

这是构造函数的样子:

public function __construct ($type = 'max') {
        if (strtolower($type) == 'max') {
            $this->shouldSwap = array($this, 'maxHeap');
        } else if (strtolower($type) == 'min') {
            $this->shouldSwap = array($this, 'minHeap');
        } else {
            throw new Exception("Unsupported type. Supported types include 'min' and 'max'");
        }
    }

minHeapmaxHeap是同一类的两个函数:

private function minHeap ($item1, $item2) {
        return $this->heap[$item2] < $this->heap[$item1];
    }

private function maxHeap ($item1, $item2) {
        return $this->heap[$item2] > $this->heap[$item1];
    }

这个想法是能够在我的其他方法中使用$this->shouldSwap,而不必担心minHeapmaxHeap的逻辑。

这给我一个错误:

Error: Call to undefined method BinaryHeap::shouldSwap()

我尝试使用:

$this->shouldSwap = '$this->minHeap';

但似乎没有任何改变。在我看来,它不了解私有变量$shouldSwap现在已分配给一个函数。

我做错什么了吗?用PHP实现我想要的东西的正确方法是什么?

0 个答案:

没有答案