Php 属性v方法变量
新的PHP OOA,有两个相关问题:Php 属性v方法变量,php,Php,新的PHP OOA,有两个相关问题: class foo { private $string = null; private $some_trivial_flag = false; 1)public function help_doing_some_stuff() { 2)*public function help_doing_some_stuff($some_trivial_flag)* { if(!$this->some_triv
class foo {
private $string = null;
private $some_trivial_flag = false;
1)public function help_doing_some_stuff() {
2)*public function help_doing_some_stuff($some_trivial_flag)* {
if(!$this->some_trivial_flag(..) ...
}
public function do_some_stuff() {
1) $this->help_doing_trivial_stuff();
2) *$this->help_doing_trivial_stuff$($this->some_trivial_flag);*
}
}
或
最好将类中使用的每个变量声明为属性,或者在类方法中保留一些声明的变量。
此外,如果已将其声明为属性,是否仍应在
方法参数列表?将需要在成员函数调用之间保留其状态的变量声明为成员变量 就这样
选择哪些变量作为函数的参数是完全不相关的。您好,感谢您的及时回复。第一点让你明白了,但我所说的参数部分实际上是-如果它是一个类属性,你还是应该在参数列表中列出它,增加函数的清晰度,或者让参数列表保持为-使用$this->thevar访问方法中的var。@jack:正如我所说,这两个属性是不相关的。函数参数与成员变量无关。您所说的是在函数中创建一个单独的局部变量,该变量与成员同名,只是为了清楚起见?那个变量会做什么?这是什么意思?太抽象了。对于某些方法调用,您实际上可能希望覆盖该标志吗?或者它是一个实际的对象状态?否则,您似乎正在编写一个实用程序类,在这种情况下,标志最好是始终且仅是一个参数。@mario-它是一个实用程序类,是转换器的解析器。
class foo {
private $string = null;
public function help_doing_some_stuff($some_trivial_flag) {
if(!$this->some_trivial_flag(..) ...
}
public function do_some_stuff() {
$some_trivial_flag = false;
$this->help_doing_trivial_stuff($some_trivial_flag);
}