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运行
PHP面向对象构造和析构函数的更多相关文章
- 面向对象_访问修饰符_构造与析构函数_this指针
1:面向对象 以codeblocks举例,在一个工程里面: File-->new -->Class可以建一个类,可以设置类的参数,是否有set get方法,有无构造函数等设置,.h文件主要 ...
- 转:Delphi2010新发现-类的构造和析构函数功能
Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NE ...
- EC笔记,第二部分:9.不在构造、析构函数中调用虚函数
9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...
- C++ 的全局构造与析构函数
我们知道一般的C/C++ 的程序是从main函数开始的,然后在main函数结束后程序结束.但是不然,在main函数开始执行前,已经有其他的指令被执行了. 为了程序的顺利执行,首先要初始化执行环境,比如 ...
- C++箴言:避免构造或析构函数中调用虚函数
如果你已经从另外一种语言如C#或者Java转向了C++,你会觉得,避免在类的构造函数或者析构函数中调用虚函数这一原则有点违背直觉.但是在C++中,违反这个原则会给你带来难以预料的后果和无尽的烦恼. 正 ...
- Delphi2010新发现-类的构造和析构函数功能
Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NE ...
- C++构造与析构函数中调用虚函数的问题
前些天想把以前写的内存池算法重写一遍,跨平台是第一目标,当时突发奇想,因为不愿意做成一大堆#if..#end,所以想利用C++的多态性,但是怎么让内存池完好退出却没想到自认为完美的方案.但是一个很偶然 ...
- 关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法
类的定义与对象的实例化操作 <?php //类里面的成员是属于对象的class Hero{ public $name;//成员变量 //成员属性(存在于强类型语言中) prot ...
- php面向对象(2)构造和析构函数
一.构造方法 构造方法是类中一个“特殊”的方法,作用是在实例化一个对象的同时,给该对象的属性赋值,使之创建完成的时就具有其本身的特有属性 该方法固定格式:[访问修饰符] function _const ...
随机推荐
- ArcEngine获取要素数据集的容差和分辨率
/// <summary> /// 根据数据集获取容差 /// </summary> /// <param name="dataset">< ...
- book_lsit
@ 学习go的轮廓.核心.难点 必看 <代码的未来> 3.2 Go ~page 123~ @ 学习内存架构.内存管理的入门.原理 必看 <操作系统之哲学原理>邹恒明 @ ...
- 2015年蓝桥杯省赛A组c++第5题(回溯算法填空)
/* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void tes ...
- [daily][centos][nginx] 在centos7使用nginx启用对文件目录的http访问
1. 安装nginx yum install nginx 2. 修改配置 2.1 提供目录权限: 我需要访问的目录是 /home/data, 用户是data, 所以修改如下配置: [root@S205 ...
- Scaleform Gfx的Demo
转载:http://www.xuebuyuan.com/2167614.html 新建一个Demo工程时,编译之前有一些VS的配置是必须的,在Debug和Release下,工程必须包括: $(GFXS ...
- 启动虚拟机提示"Units specified don’t exist SHSUCDX can’t install"
新建虚拟机快速分区后启动报"Units specified don’t exist SHSUCDX can’t install",试过网上说的 修改BIOS设置方法不起作用 修改虚 ...
- Appium环境配置(一)
一:环境准备(Windows 7版本 64位系统) 1.jdk1.6.0 (64位) 2.android-sdk 3.appium 4.Node.js:node-v8.11.1 5.Appium-Py ...
- 使用Maven根据WSDL生成生成Java代码
转载:https://blog.csdn.net/pzasdq/article/details/52601473 为便于自己学习,整理 修改pom.xml <project xmlns=&quo ...
- 重读《深入理解Java虚拟机》七、探究Java内存模型
1.计算机物理内存结构(物理内存结构决定了虚拟机内存结构) 由于处理器和主存储设备在运算速度上不上同一个数量级上,因此处理器和主存储器之间不得不增设一层高速缓存,将部分在主存储设备的运算放在高速缓存内 ...
- [MySQL优化1]centos中MySQL列出所有表
步骤1 - 连接到MySQL数据库服务器:[root@host]# mysql -u root -pEnter password:******提示登陆成功Welcome to the MySQL mo ...