私は同僚のコードを編集しようとしています(彼は休暇中で、手の届かないところにいます)。次のifステートメントがあります。
if($this->carrier() == 1 and $this->carrier() == 2) {
return 'V';
}
私の望みは、彼が誤って「または」の代わりに「and」を付けて、私が受けているバグを説明できることですが、彼は私よりもPHPについてよく知っているので、直感に反するのではなく、これが間違っていることを確認したいと思います。 。
私は同僚のコードを編集しようとしています(彼は休暇中で、手の届かないところにいます)。次のifステートメントがあります。
if($this->carrier() == 1 and $this->carrier() == 2) {
return 'V';
}
私の望みは、彼が誤って「または」の代わりに「and」を付けて、私が受けているバグを説明できることですが、彼は私よりもPHPについてよく知っているので、直感に反するのではなく、これが間違っていることを確認したいと思います。 。
はい、それは潜在的な副作用を伴う機能なので、それは本当かもしれません。
例えば:
function carrier() {
return $someValue++;
}
はい。このcarrier()メソッドは、呼び出すたびに返される値をインクリメントできます。
はい、可能性はわずかです。
彼は関数を2回呼び出していますが、その関数のテキストは含まれていません。つまり、このプロセスによって呼び出された回数を数えるなど、私たちには見えないことをしている可能性があります。
一方で、それは確かにタイプミスである可能性がはるかに高いです。
可能です。これが実行可能な実例です。
class program
{
private $i = 1;
function carrier()
{
$this->i=$this->i+1;
return $this->i-1;
}
function run()
{
if ($this->carrier()==1 && $this->carrier()==2)
{
echo "works";
}
else
{
echo "doesnt work" . $i;
}
}
}
$prog = new Program();
$prog->run();