php面向对象静态和非静态

本文通过一个PHP类的示例,详细解释了静态成员与非静态成员的区别及使用方式,并展示了如何通过不同方式调用这两种类型的成员,揭示了一些可能违反直觉的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态与非静态的区别在于前面有没有static的修饰,有static的是静态变量,明显,没有的则是非静态了。一般调用静态变里,是通过 :: 来调用,而非静态是通过->来调用。但下面去会颠覆你的三观。你会发现用 :: 也能调用非静态,用 ->也能调用静态.

<?php
	class admin {
		public static $name = 'Mike';
		public $nick =  'Jose';
		public static $count = 0;
		public $num = 0;
		public function __construct() {


		}


		public static function getName() {
			return self::$name;
		}


		public function getNick($nick) {
			$this->nick = $nick;
			return $this->nick;	
		}


		public static function addCount() {
			self::$count = self::$count + 1;
			return self::$count;
		}


		public function addNum() {
			$this->num += 1;
			return $this->num;
		}


		public static function Max($num, $num2) {
			return $num >= $num2 ? $num : $num2;
		}


		public function Max3($num1, $num2, $num3) {
			$num = self::Max($num1,$num2);
			$num = self::Max($num, $num3);
			return $num;
		}
		public function index() {
			echo 'This is index';
		}
	}	
	$person = new admin();
	$person->nick; 			// Jose
	$person->getNick('Tang'); 
	echo $person->nick; 	//tang;
	echo admin::$count;  	// 0
	admin::addCount(); 		// $count = 1
	admin::addCount();		// $count = 2
	admin::addCount();		// $count = 3
	echo admin::$count;	
	echo admin::index();	// This is index
	echo $person->index();  // This is index
	echo  admin::getNick('nike'); //报错了,因function getNick() 中有$this
	//同样也可以通过  实例名 -> 来调用静态方法
	$person->addCount();
	$person2 = new admin();
	$person->addCount();		// $count = 5;
 ?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值