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 中将是相同的行为,在第二个代码示例中,数学是多余的。

有人有任何解决方案来清晰优雅的代码吗?

我正在添加以下代码作为新示例:

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);
        }
    }

在第三个示例中,我可以在 for 语句中使用 temp $var $this->Registers[$i],但如果所有处理代码都在像 Sanitize 类这样的类中。

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

我想要一种方法来做更短且没有重复的代码。

4

3 回答 3

4

您正在寻找的内容更类似于 java 而不是 javascript,在 java 中的this资格是可选的,可以省略。javascript 的with语句只有一半功能,因为它甚至不适用于赋值。

PHP 没有,您$this->每次都必须明确输入。

于 2012-11-19T21:57:52.767 回答
0

PHP 作用域与 Javascript 非常不同。我想我能想到的最好的方法是扩展一个类并$this->在任何地方使用而不是类名 - 你有一个可以与我们分享的用例吗?

于 2012-11-19T21:20:50.517 回答
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 回答