PHP面向对象(二)
构造函数
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
代码如下:
<?php
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
class NbaPlayer{
public $name = "Jordan"; //定义属性
public $height = "198cm";
public $team = "Bull";
public $playerNumber = "23";
//构造函数,在对象被实例化的时候自动调用
function __construct($name,$height,$weight,$team){
echo "It is an NbaPlayer constructor\n";
$this->name = $name;
//$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
$this->height = $height;
$this->weight = $weight;
$this->team = $team;
}
//定义方法
public function run(){
echo "Running\n";
}
public function dribblr(){
echo "Dribbling\n";
}
public function pass(){
echo "Passing\n";
}
}
//类到对象的实例化
//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
//对象中的属性成员可以通过"->"符号来访问
echo $jordan->name."\n";
//对象中的成员方法可以通过"->"符号来访问
$jordan->dribble();
$jordan->run();
//每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
$james = new NbaPlayer("James","203cm","120kg","Heat")
echo $james->name."\n";
?>
析构函数
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
class NbaPlayer{
public $name = "Jordan"; //定义属性
public $height = "198cm";
public $team = "Bull";
public $playerNumber = "23";
//构造函数,在对象被实例化的时候自动调用
function __construct($name,$height,$weight,$team){
echo "It is an NbaPlayer constructor\n";
$this->name = $name;
//$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
$this->height = $height;
$this->weight = $weight;
$this->team = $team;
}
//析构函数,在程序执行结束的时候会自动调用
//析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源
function __destruct(){
echo "Destroying".$this->name."\n";
}
//定义方法
public function run(){
echo "Running\n";
}
public function dribblr(){
echo "Dribbling\n";
}
public function pass(){
echo "Passing\n";
}
}
//类到对象的实例化
//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
//对象中的属性成员可以通过"->"符号来访问
echo $jordan->name."\n";
//对象中的成员方法可以通过"->"符号来访问
$jordan->dribble();
$jordan->run();
//每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
$james = new NbaPlayer("James","203cm","120kg","Heat")
echo $james->name."\n";
//通过把变量设为null,可以触发析构函数的调用
//当对象不再使用的时候会触发析构函数
$james = null;
echo "from now on James will not be used.\n"
?>
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
PHP面向对象(二)的更多相关文章
- 2. 星际争霸之php面向对象(二)
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- Javascript面向对象二
Javascript面向对象二 可以通过指定原型属性来对所有的对象指定属性, Object.prototype.name="zhangsan"; Object.prototype. ...
- python面向对象二
1.1类的静态属性,类方法,类的静态方法 1.1.1静态属性(@property) 在类中: python内置的@property装饰器就是负责把一个方法(函数)变成属性来调用. class Stud ...
- canvas学习和面向对象(二)
Canvas 学习(二) 上一篇Canvas 学习(一)中我是用canvas绘制了一些基本和组合的图形. 现在开始绘制图片和动画帧,以及面向对象的升级版本. 还是一样,看代码,所有的代码都托管在git ...
- JavaScript 面向对象(二) —— 案例篇
看案例前可以先看看基础篇:JavaScript 面向对象(一) —— 基础篇 案例——面向对象的选项卡:把面向过程的程序一步步改成面向对象的形式,使其能够更加的通用(但是通用的东西,一般会比较臃肿). ...
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
前 言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- Python之面向对象二
面向对象的三大特性: 继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 c ...
- Python自动化开发 - 面向对象(二)
本节内容 1.isinstance(obj,cls)和issubclass(sub,super) 2.反射 3.__setattr__,__delattr__,__getattr__ 一. isins ...
- python 面向对象二 类和实例
一.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法, ...
随机推荐
- Linux安装&卸载mysql5.7
Linux系统下卸载mysql 停止mysql服务 systemctl stop mysqld.service 查看安装的mysql服务 rpm -qa|grep -i mysql 删除安装的mysq ...
- [常用工具] 基于psutil和GPUtil获取系统状态信息
本文主要介绍在Python3中利用psutil库获取系统状态,利用GPUtil获取gpu状态. psutil (process and system utilities)(进程和系统实用程序)是一个跨 ...
- [OpenCV实战]7 使用YOLOv3和OpenCV进行基于深度学习的目标检测
目录 1 YOLO介绍 1.1 YOLOv3原理 1.2 为什么要将OpenCV用于YOLO? 1.3 在Darknet和OpenCV上对YOLOv3进行速度测试 2 使用YOLOv3进行对象检测(C ...
- Html飞机大战(十八): 模块化+项目开源
好家伙,好久好久没有更新这个系列了 为了使文档更方便阅读,使代码更容易维护,来把这个飞机大战模块化 项目已开源: https://gitee.com/tang-and-han-dynasties/ ...
- 数位排序【第十三届蓝桥杯省赛C++C组】
数位排序 小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序. 当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面. 例如,\(2022\) 排在 \( ...
- 题解 CF1579G Minimal Coverage
CF1579G Minimal Coverage dp好题! link to the problem 解法 首先需要观察到:如果最长线段的长度为\(maxL\),那么答案不可能超过\(2maxL\) ...
- Python从零到壹丨图像增强及运算:图像掩膜直方图和HS直方图
摘要:本章主要讲解图像直方图相关知识点,包括掩膜直方图和HS直方图,并通过直方图判断黑夜与白天,通过案例分享直方图的实际应用. 本文分享自华为云社区<[Python从零到壹] 五十二.图像增强及 ...
- Web 页面如何实现动画效果
Web 页面可以使用多种方式实现动画效果,其中最常用的有两种: CSS 动画:通过 CSS 中的 transition 和 animation 属性来实现动画效果.CSS 动画实现起来简单,性能消耗小 ...
- VS针对Linux远程调试步骤
VS2019下对于远程Linux下C++代码的调试 VS2017后新增了对跨平台代码的编写,编译和调试的功能,2019后更是新增了多种插件,以下是针对C++版本的linux环境代码调试 准备工作 安装 ...
- MRS_外部库相关问题汇总
解决问题如下: CH32V307使用IQMath库时 使用MRS时,当使用到math数学库 CH32V307使用IQMath库时 CH32V307是支持硬件浮点的,可以是math.h中的sinf.IQ ...