一、构造函数
用来生成对象的函数
<?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运行