[php]属性、方法和常量
来源:互联网 发布:0基础软件开发 编辑:程序博客网 时间:2024/06/05 03:27
- 类成员的概述
- 类常量
- 类属性
- 普通属性实例属性
- 静态属性
- 类方法
- 普通方法实例方法
- 静态方法
- 构造方法__construct
- 析构方法__destruct
- static关键字的新用法
属性:
属性就是“变量”,只不过现在它写在了类中,就称为属性;
方法:
方法就是“函数”,只不过现在它写在了类中,就称为方法;
注意:属性和变量,方法和函数的区别是,变量和函数是独立存在的,一般是独立调用。而属性和方法只能通过这个类或者这个类的对象才能去调用。
通过一个类创建出来的对象,直接拥有这个类的属性和方法。
<?phpclass MyGirl{ var $name = "小花"; //此时它叫做“属性”(原来是变量) var $age = 18; var $edu = "大学"; //此时,它叫做“方法”(原来是函数) function xiyifu{ echo "<br />{$this->age}岁{$this->edu}学历的{$this->name}再勤快的洗衣服"; } function zuofan{ echo "<br />{$this->age}岁{$this->edu}学历的{$this->name}再快乐的做饭"; }}$obj1 = new MyGirl();$obj1->xiyifu();$obj1->zuofan();?>
注意:
类中只能有属性方法常量三种成员。
<?phpclass A{ public $a = 10; echo $a; //错误,此行既不是属性也不是方法和常量,不为类所接受。 if($a > 0){ //错误,此循环既不是属性也不是方法和常量,不为类所接受。 echo $a; }}?>
类成员的概述
面向对象的编程,是需要通过“对象”去做什么事情以完成某个目标。而对象源于类。
所以——面向对象编程,一切都是从定义类开始。
类中成员分为三大类:
1.属性:
a.普通属性;
b.静态属性;
2.方法:
a.普通方法;
b.静态方法;
c.构造方法;
d.析构方法;
3.常量
在使用习惯上,我们会把常量放前面,然后是属性,最后是方法。但顺序不是这样也没什么问题。
类常量
当在类中定义一个常量时,该常量就称为“类常量”。
语法形式:
calss 类名{
const 常量名 = 常量值;
}
使用形式:
常量的使用,是通过类名,并使用范围解析符(::)来取用的。
示例:
<?phpclass C1{ //定义类常量; const P = 3.14; const G = 9.8;}//使用类常量;$v1 = C1::P*3*3;echo "<br />v1 =$v1"; //v1 = 28.26echo "<br />C1::G = ".C1::G; //C1::G=9.8 .常量在双引号中不会被编译?>
类属性
普通属性(实例属性)
实例,也叫做“对象”;
实例(普通)属性,就是一个可以在一个类实例化的对象上使用的属性。
语法形式:
class 类名{
var
//也可以使用pubic来定义属性。
public
}
使用形式:
可以通过该类的对象,来使用实例属性。(把它当成一个变量)
$对象->属性名;
静态属性
静态属性,本质上也是“变量”,但它的特点是——该变量只隶属于类本身,即:一个类中的一个静态属性,就只有一份数据,不会被复制。而实例属性,则是会被每个对象“复制”;
语法形式:
class 类名{
static $属性名 = 初始值;static $属性名; //该属性没有初始值
}
使用形式:
使用类名和范围解析符(::)来对静态属性进行操作:
类名 :: $静态属性名;
示例:
类方法
普通方法(实例方法)
实例方法是一个类中定义的方法,可以为这个类的所有对象调用。
语法形式:
class 类名{
function 方法名(形参1,形参2,...){ //方法体。。。}
}
使用形式:
$对象名->方法名(实参1,实参2,…);
静态方法:
一个类中定义的方法,只隶属于这个类本身,而不属于这个类的所有对象。
语法形式:
class 类名{
static function 方法名(形参1,形参2,...){ //方法体。。。}
}
使用形式:
类名 :: 方法名(实参1,实参2,…);
普通方法和静态方法的综合示例:
<?phpclass C1{ public $p1 = 1; //实例属性 static $p2 = 2; //静态属性 //实例方法 function showInfo1(){ echo "<br />实例方法被调用!"; echo "<br />p1的值为:".$this->p1; //$this代表一个对象,就是调用当前这个方法的对象。 //实例方法中,也可以去使用“静态属性” echo "<br />p2的值为:".self::$p2; //self相当于$this。调用的是本身所在的类,这里的self代表C1中的静态类 } static function showInfo2(){ echo "<br />静态方法被调用!"; echo "<br />p2的值为:".self :: $p2; //self和$this都是重要的概念。 //静态方法中,通常不能使用实例属性。 }}$o1 = new C1();$o1->showInfo1(); //使用对象调用实例方法C1 :: showInfo2(); //使用类调用静态方法?>
构造方法(__construct)
构造方法,是一个特殊的方法:
1.构造方法的名字是固定的:__construct;
2.该方法通常都不要我们自己调用,而是在new一个对象的时候,会首先自动调用的方法;
3.该方法主要的目的是为了在new一个对象的时候,给该对象设置一些“初始值”。(进行初始化工作)
4.构造方法的参数没有规定,通常根据实际需要来定义,目的是为了对象属性数据的初始化。
5.如果一个类中定义了构造方法,那么实例化该类时,就会自动调用该方法。且实例化类的参数需要与构造方法的参数相匹配。
示例:
<?phpclass MyGirl{ var $name; var $age; var $edu; function __construct($p1,$p2,$p3){ $this->name = $p1; $this->age = $p2; $this->edu = $p3; } function xiyifu{ echo "<br />{$this->age}岁{$this->edu}学历的{$this->name}正在开心的洗衣服"; }}//new这个MyGirl类的同时,就自动调用了_construct($p1,$p2,$p3)这个方法,所以要在new的时候加对应的实参$obj1 = new MyGirl('小星',20,'初中');$obj1->xiyifu();$obj1 = new MyGirl('小西',22,'大学');$obj1->xiyifu();?>
析构方法(__destruct)
1.析构方法是一个特殊的方法,名字为固定的词:__destruct
2.析构方法是在一个对象被“销毁”的时候会自动被调用的方法——我们无法调用它。
3.析构方法不能带参数(形参),但方法中也可以使用$this这个词,代表当前对象。
static关键字的新用法
static可以跟self一样,代表”当前类“,用于访问一个类的”静态属性或静态方法“。
但是static比self更灵活,因为static代表的是当前方法的类,而不是其代码所在的位置的类。
而self只能代表其代码所在的位置的类。
示例:
<?phpclass A{ static $p1 = 5; static function showOb(){ echo "<br />".self :: p1; echo "<br />".static :: p1; }}class B extends A{ static $p1 = 10; //class B 中的$p1被重写了}A :: showOb();B :: showOb();?>//结果:555 (重写后self依然读取其所在位置的类的信息)10(重写后static读取调用它的对象的类的信息)
- [php]属性、方法和常量
- PHP获得类常量,属性,方法列表
- php中的魔术常量和魔术方法(二) ,方法?属性?不存在的!
- PHP中的静态属性、静态方法、常量属性
- PHP魔术方法和魔术常量
- PHP魔术方法和魔术常量
- php常见魔术常量和魔术方法
- PHP的魔术常量和魔术方法
- PHP魔术方法和魔术常量总结
- PHP中的魔术方法和魔术常量
- 常量和存储属性
- Ruby 类的属性、变量、常量和方法定义
- 常量、字段、方法、属性和索引器(C#)
- PHP中的魔术方法和魔术常量简介和使用
- PHP魔术方法和魔术常量介绍及使用
- PHP魔术方法和魔术常量介绍及使用
- PHP魔术方法和魔术常量介绍及使用
- php中的魔术常量和魔术方法(一)
- Mac iTerm 2使用rz、sz从远程上传下载文件
- deep learning 博客总结
- C/C++ sort函数的用法
- getgroups
- ubuntu 15.04 安装无线网卡驱动
- [php]属性、方法和常量
- mybatis简单运用(基于Annotation)
- Java解析XML getNodeValue()返回空
- Android事件分发机制分析
- 《文件传输基础----Java IO流---《一》》
- 程序媛进步指南,带着思考去做这些事情
- 四种方案解决ScrollView嵌套ListView问题
- 提高项目34-矩阵相乘
- 使用JDOM方式解析XML