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运行

  • 相关阅读:
    python3.x学习笔记2018-02-05更新
    网络安全学习资源整理2018-02-02更新
    隔行变色效果
    自制滚动条
    关于ico图标
    CSS实现标题/段落省略效果的三剑客
    第三章(循环) 编程题 2
    第三章(循环) 编程题
    python基础03--基本数据类型(字符串)
    python基础02--运算符与基本数据类型(数字)
  • 原文地址:https://www.cnblogs.com/navyouth/p/8228203.html
Copyright © 2011-2022 走看看