4

Javascript からいくつかのコードを移植すると、この不便さがあります。例えば:

JavaScript では、このコードを生成できます。

var a, x, y;
var r = 10;
with (Math) {
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI / 2);
}

その代わり

a = Math.PI * r * r;
x = r * Math.cos(Math.PI);
y = r * Math.sin(Math.PI / 2);

この最後の例では、PHP、IE、2 番目のコード例での数学は冗長です。

誰かが明確でエレガントなコードの解決策を持っていますか?

新しい例として次のコードを追加しています。

class MyExampleClass {

    function example {

        for($i = 0; $i < count($this->Registers); $i++) {
            $r = "50";
            $r .= $this->ZeroFill($this->numericOnly($this->Registers[$i]->Id)), 15) . $this->ZeroFill($this->numericOnly($this->Registers[$i]->Inscription), 25);
            $r .= $this->ZeroFill($this->Registers[$i]->Model, 2 );
            $r .= $this->PadR($this->alpha($this->Registers[$i]->Date), 10 );
            $this->WriteRecord( $r);
        }
    }

3 番目の例では、 for ステートメント内で temp $var を使用できます$this->Registers[$i]が、すべての処理コードが class Sanitize のようなクラスになる場合。

with (Sanitize) {
  $r .= ZeroFill(numericOnly($tmp), 15); // are much more clear and using OO
}

より短く、繰り返しのないコードを実行する方法が必要です。

4

3 に答える 3

4

あなたが探しているのは、javascript よりも Java に似ています。Javathis修飾はオプションであり、省略できます。javascript のwithステートメントは、割り当てでも機能しないため、半分しか機能しません。

$this->PHP にはそれがなく、毎回明示的に入力する必要があります。

于 2012-11-19T21:57:52.767 に答える
0

pi()cos()、 & sin()はすべて PHP の予約関数です。

<?php
$r = 10;
$a = pi() * $r * $r;
$x = $r * cos(pi());
$y = $r * sin(pi() / 2);
?>
于 2012-11-19T21:28:29.893 に答える
0

PHP のスコープは、Javascript とは大きく異なります。私が考えることができる最善の方法は、クラスを拡張し、$this->どこでもクラス名ではなく使用することだと思います-私たちと共有できるユースケースはありますか?

于 2012-11-19T21:20:50.517 に答える