是否可以将 class 成员值传递给 class 方法?
Is it possible to pass class member value to class method?
在PHPclass中,我有一个会员专柜:
private $counter = [];
我想获取此数组的长度并将其作为方法参数的默认值传递:
public function myMethod($n = $counter)){
}
我试过:
public function myMethod($n = count($this->$counter))){
// not working
}
public function myMethod($n = count($this->counter))){
// not working
}
public function myMethod($n = array('MyClass', count($counter)))){
// still not working
}
public function myMethod($n = $this->methodReturningCounterLength()){
// not working
}
我想做的事情有可能吗?
根据我的想法,最好的实现方式如下
class A{
private $counter = [];
public function foo($length=null){
$length = empty($length) ? count($this->counter) : $length;
echo $length;
}
}
$ob = new A();
$ob->foo();
这是不可能的,但您可以这样做:
public function myMethod($n = null){
if(is_null($n))
$n = count($this->counter);
}
您不能使用变量、属性 或函数调用作为默认参数值。它必须是一个常数值。
所以你需要做的是这样的:
public function myMethod($n = null){
if (is_null($n)) {
$n = count($this->counter);
}
// echo($n);
}
我认为您尝试做的事情是不可能的,PHP 文档针对 default argument values 指出:
The default value must be a constant expression, not (for example) a
variable, a class member or a function call.
所以我认为最好的方法是:
public function myMethod($n = null){
if ($n === null) {
$n = count($this->counter);
}
}
在PHPclass中,我有一个会员专柜:
private $counter = [];
我想获取此数组的长度并将其作为方法参数的默认值传递:
public function myMethod($n = $counter)){
}
我试过:
public function myMethod($n = count($this->$counter))){
// not working
}
public function myMethod($n = count($this->counter))){
// not working
}
public function myMethod($n = array('MyClass', count($counter)))){
// still not working
}
public function myMethod($n = $this->methodReturningCounterLength()){
// not working
}
我想做的事情有可能吗?
根据我的想法,最好的实现方式如下
class A{
private $counter = [];
public function foo($length=null){
$length = empty($length) ? count($this->counter) : $length;
echo $length;
}
}
$ob = new A();
$ob->foo();
这是不可能的,但您可以这样做:
public function myMethod($n = null){
if(is_null($n))
$n = count($this->counter);
}
您不能使用变量、属性 或函数调用作为默认参数值。它必须是一个常数值。
所以你需要做的是这样的:
public function myMethod($n = null){
if (is_null($n)) {
$n = count($this->counter);
}
// echo($n);
}
我认为您尝试做的事情是不可能的,PHP 文档针对 default argument values 指出:
The default value must be a constant expression, not (for example) a variable, a class member or a function call.
所以我认为最好的方法是:
public function myMethod($n = null){
if ($n === null) {
$n = count($this->counter);
}
}