PHP类中静态方法与普通方法的互相调用
静态方法调用普通方法
方法一:在静态方法中使用new Animal()实例化Animal()类并赋值给$data,再通过$data调用其他的普通方法。
class Animal{
public static function info(){
$data = new Animal();
return "我是静态方法,我可以调用类中的普通方法".$data->say();
}
public function say(){
return "我会说话";
}
public function run(){
return "我会跑";
}
}
// 实例化animal类
$obj = new Animal();
// 调用类中的静态方法 类名::方法名
echo $obj::info(); // 输出结果:我是静态方法,我可以调用类中的普通方法我会说话
方法二:在静态方法中使用new self()实例化Animal()类并赋值给$data,再通过$data调用其他的普通方法。
class Animal{
public static function info(){
$data = new self();
return "我是静态方法,我可以调用类中的普通方法".$data->say();
}
public function say(){
return "我会说话";
}
public function run(){
return "我会跑";
}
}
// 实例化animal类
$obj = new Animal();
// 调用类中的静态方法 类名::方法名
echo $obj::info(); // 输出结果:我是静态方法,我可以调用类中的普通方法我会说话
普通方法调用静态方法
方法一:在普通方法中使用$this调用静态方法
class Animal{
public static function info(){
$data = new Animal();
return "我是静态方法,我可以调用类中的普通方法";
}
public function say(){
return "我会说话".$this->info();
}
public function run(){
return "我会跑";
}
}
// 实例化animal类
$obj = new Animal();
// 调用类中的普通方法 类名->方法名
echo $obj->say(); // 输出结果:我会说话我是静态方法,我可以调用类中的普通方法
方法二:在普通方法中使用self::info()或者Animal::info()调用静态方法
class Animal{
public static function info(){
$data = new Animal();
return "我是静态方法,我可以调用类中的普通方法";
}
public function say(){
return "我会说话".self::info(); // 或者Animal::info()
}
public function run(){
return "我会跑";
}
}
// 实例化animal类
$obj = new Animal();
// 调用类中的普通方法 类名->方法名
echo $obj->say(); // 输出结果:我会说话我是静态方法,我可以调用类中的普通方法
修改静态属性
class Person {
public $name = '沐莲';
public static $age = 22;
public function intro(){
echo "<br />hi,大家好,我叫 " . $this->name;
echo ",今年 " . Person::$age . " 岁";
}
}
$p = new Person();
$p::$age = 24; // 修改静态属性值
$p->name = '沐水莲心';
$p->intro(); // 输出结果:hi,大家好,我叫 沐水莲心,今年 24 岁