zoukankan      html  css  js  c++  java
  • 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]}
    ";
    		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}
    ";
    	if($sj1){
    		$gj = $h1->jineng();
    	}else{
    		$gj = $h1->attack+rand(0,20);
    	}
    	$h2->blood = $h2->blood-$gj;
    	echo "{$h1->name}打掉了{$h2->name}的{$gj}血
    ";
    	echo "******************************
    ";
    	
    	$sj2 = rand(0,1);
    	$gj2 = 0;  //本次h2能打掉多少血
    	echo "{$h2->name}打{$h1->name}
    ";
    	if($sj2){
    		$gj2 = $h2->jineng();
    	}else{
    		$gj2 = $h2->attack+rand(0,20);
    	}
    	$h1->blood = $h1->blood-$gj2;
    	echo "{$h2->name}打掉了{$h1->name}的{$gj2}血
    ";
    	echo "******************************
    ";
    	
    	if($h2->blood<=0){
    		echo "{$h1->name}赢了";
    		break;
    	}else if($h1->blood<=0){
    		echo "{$h2->name}赢了";
    		break;
    	}
    	echo "----
    
    
    ";
    	//休眠
    	sleep(3);
    }
    

     用cmd运行

  • 相关阅读:
    Iconfont在Vue中的使用
    yarn安装依赖报错
    动漫
    伤痛的魅力。绷带男子特辑
    记STM32F103C8T6+STLINK下载器在Keil中的设置
    JQuery浮动对象插件
    树莓派RTL8723BU_LINUX驱动安装
    python虚拟环境相关设置备忘
    解决树莓派控制台命令行乱码
    python模块wifi使用小记
  • 原文地址:https://www.cnblogs.com/navyouth/p/8228203.html
Copyright © 2011-2022 走看看