如何在PHP中将类定义的变量传递给类的方法?
解决PHP类成员变量传递给方法的冗余问题
你当前的代码调用MoveWheels()时没有传递参数,但方法定义里要求两个参数,运行时会直接报错。而且确实没必要把已经定义好的类成员变量再作为方法参数传递,用$this关键字就能直接访问类内部的成员属性,完全避免冗余。
修改后的基础写法
class Car { var $num_wheels = 4; var $model = "BMW"; function MoveWheels() { // 使用$this访问类的成员变量 echo "The {$this->num_wheels} wheels on the {$this->model} are spinning."; } } $bmw = new Car(); $bmw->MoveWheels();
关键说明
$this是PHP类内部的特殊关键字,代表当前对象的实例,通过它可以直接调用类中定义的成员属性(比如$this->num_wheels、$this->model)。- 这种写法既不用给方法设置冗余的默认参数,也不用在调用时手动传递变量,直接复用类里已经定义好的值。
兼顾灵活传参的进阶写法
如果需要临时传入自定义值(同时保留类默认值的兜底),可以给方法设置可选参数,结合空合并运算符实现:
class Car { var $num_wheels = 4; var $model = "BMW"; function MoveWheels($num_wheels = null, $model = null) { // 有传入参数就用传入值,否则用类的成员变量 $wheelCount = $num_wheels ?? $this->num_wheels; $carModel = $model ?? $this->model; echo "The {$wheelCount} wheels on the {$carModel} are spinning."; } } $bmw = new Car(); $bmw->MoveWheels(); // 输出:The 4 wheels on the BMW are spinning. $bmw->MoveWheels(6, "Tesla"); // 输出:The 6 wheels on the Tesla are spinning.
内容的提问来源于stack exchange,提问作者Charles Hoffman
相关产品推荐
相关产品推荐

