【问题标题】:Is it necessary to declare argument of functions in php class?是否有必要在 php 类中声明函数的参数?
【发布时间】:2013-06-25 06:16:43
【问题描述】:

我正在尝试学习 php 类。我对哪些属性应该在类中声明感到困惑。我举一个简单的例子来了解情况:

class main{
var $a=5;
var $b;
 function add($c){
 return $this->a + $this->b + $c;
 }
}

$load = new main();
$load-> $b=10;
echo $load->add(20); //will output 35

在上述情况下,请注意我没有在类中声明属性 $c。它直接从调用 $load->add(20) 访问,并且运行良好。 我的问题是虽然这是有效的,但这是正确的方式还是在这种情况下我必须声明 $c 属性? 注意:这可能是由于 oop 的设置魔法方法而起作用,不确定。

【问题讨论】:

  • 附带说明,您不再需要这些 var 关键字了。
  • 筱社,你能告诉我为什么不再需要用户 var 关键字吗?
  • 因为它已被弃用。见stackoverflow.com/questions/1206105/…
  • 感谢您提供宝贵的信息。

标签: class oop properties


【解决方案1】:

有一些错误,类名(main)后面的括号和var $b之前的$,倒数第二行b之前的$。

不管怎样,这里没有魔法,你用$a和$b变量声明了一个类(类属性):然后你写了方法add,它接受一个local 参数($c),并将其添加到当前对象的 $a 和 $b 属性中。

方法执行后,您将丢失传递给方法的值,分配给$c

您的示例是正确的,如果您只想以这种方式使用它,则不必声明$c;相反,如果要将其用作对象属性,则需要在其他类属性中声明它,例如在另一个方法中使用它。在这种情况下,您必须先在类中声明它,然后将其用作$this->c

例如:

class main {
   ...
   var $c;

   function test($c){
     $this->c = $c;
     ...
   }
}

注意$this->c$c 是两个不同的变量:$c 只是在方法的范围内,如前所述。

【讨论】:

    猜你喜欢
    • 2012-02-16
    • 2018-10-26
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多