PHP面向对象构造和析构函数

一、构造函数

用来生成对象的函数

	<?php
	class Ren{
		public $name;
		public $sex;//性别是人一出生就知道的,可以用构造函数来定义
		/*public function Ren(){
		} */
		//构造函数不常用
		public function __construct(){	
		}//构造函数常用
	}
    ?>

 1、构造函数写法特殊

函数名和类名保持一直或者直接用__construct         ( __双下划线)

2、执行特殊

new的时候自动执行不用调用

造对象的时候执行

	<?php
	class Ren{
		public $name;
		public $sex;
		public function __construct($sex){
			$this->sex = $sex;
			echo "测试一下";
		}
	}
	$r = new Ren("男");
	$r->name = "张三";
	var_dump($r);
    ?>

 

二、析构函数

对象销毁前调用,因为PHP等语言都有垃圾回收机制所以一般用不到

	<?php
	class Ren{
		public $name;
		public $sex;
		public function __construct($sex){
			$this->sex = $sex;
		}
		public function __destruct(){
			echo "销毁";
		}//执行完name后没有可执行的 会自动销毁内容
	}
	$r = new Ren("男");
	$r->name = "张三";
    ?>

 销毁

实例

<?php
//设置当前页面编码格式为gbk
header("Content-type:text/html; charset=gbk");

class hero{
	public $name; //名字
	public $blood; //血量
	public $attack; //攻击力
	
	//放技能的方法
	public function jineng(){
		$arr = array(
			array(50,"隔山打牛"),
			array(60,"降龙十八掌"),
			array(45,"九阳神功"),
			array(20,"葵花宝典"),
			array(70,"六脉神剑")
		);
		$gs = count($arr);
		
		$sy = rand(0,$gs-1);
		echo "{$this->name}使用了{$arr[$sy][1]}\n";
		return $arr[$sy][0];
	}
	
	//构造函数
	public function __construct($name,$blood,$gjl){
		$this->name = $name;
		$this->blood = $blood;
		$this->attack = $gjl;
	}
}


//造第一个人
$h1 = new hero("狗蛋",800,15);

//造第二个人
$h2 = new hero("大壮",700,16);

while(true){
	
	//随机一下,是普攻还是放技能
	$sj1 = rand(0,1);
	$gj = 0;  //本次h1能打掉多少血
	echo "{$h1->name}打{$h2->name}\n";
	if($sj1){
		$gj = $h1->jineng();
	}else{
		$gj = $h1->attack+rand(0,20);
	}
	$h2->blood = $h2->blood-$gj;
	echo "{$h1->name}打掉了{$h2->name}的{$gj}血\n";
	echo "******************************\n";
	
	$sj2 = rand(0,1);
	$gj2 = 0;  //本次h2能打掉多少血
	echo "{$h2->name}打{$h1->name}\n";
	if($sj2){
		$gj2 = $h2->jineng();
	}else{
		$gj2 = $h2->attack+rand(0,20);
	}
	$h1->blood = $h1->blood-$gj2;
	echo "{$h2->name}打掉了{$h1->name}的{$gj2}血\n";
	echo "******************************\n";
	
	if($h2->blood<=0){
		echo "{$h1->name}赢了";
		break;
	}else if($h1->blood<=0){
		echo "{$h2->name}赢了";
		break;
	}
	echo "----\n\n\n";
	//休眠
	sleep(3);
}

 用cmd运行

posted @ 2018-01-07 15:47  navyyouth  阅读(140)  评论(0编辑  收藏  举报