PHP类中静态方法与普通方法的互相调用

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 "
hi,大家好,我叫 "
. $this->name; echo ",今年 " . Person::$age . " 岁"; } } $p = new Person(); $p::$age = 24; // 修改静态属性值 $p->name = '沐水莲心'; $p->intro(); // 输出结果:hi,大家好,我叫 沐水莲心,今年 24 岁

你可能感兴趣的:(#,PHP,php)