PHP对象
2016年5月29日
16:13
类与对象:类是变量与作用域这些变量的函数的集合。对象数据类型也可用于存储数据。
封装:隐藏类的数据成员,只向外提供一些公用的操作接口。
继承:在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有基类的特征和能力。
多态:是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
类实际上就是一个模板,定义了某个概念或真实事物的性质和行为。
对象:类用关键字class定义。创建一个对象首先要创建一个类,创建好类后可使用关键字new来生成类的对象。
class car
{var $color;
Function Car($color="green")
{this->color = $color;
}
Function What-color() {
Return $this->color; //this指向当前对象实例的指针。
}
}
$bmw = new car();
$bmw->what-color();//实例化了一个新的对象。
在PHP术语中,根目录是全局名称空间,路径名符号是-> ,在php中,一个变量名只有一个单独的美元符号。
声明字段:类中的字段,实际上就是对象中所具有的属性,用来表示实体的某一种状态。
使用字段:与变量不同的是,不能直接使用类中的字段,而需要使用'->'操作符调用字段。并且只能使用对象调用。所以在使用字段时,还需要指定相应的对象。
Object ->field 此时不使用相应的类名,而是使用$this关键字,该关键字表示要引用当前类中的字段。
字段的作用域:
public、private、protected、final和static
Public:表示修饰的字段的作用域范围是公共作用域。
Private: 表示修饰的字段只能在类中访问,类以外的其他位置无法访问该字段。
Protected:表示修饰的字段时受保护的,受保护的字段只能在类中调用,不允许在类的外部调用这些字段。
Final:当设置为final时,将阻止在子类中覆盖这个字段。
Static:静态作用域。
静态变量:仅在局部函数域中声明,用关键字static能够声明一个静态变量。静态变量在函数退出时不会丢失值,而且再次调用此函数时,还能保留值。
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
在 类内部使用时通过self::方法名调用,在类外部使用时通过类名::方法名来调用。(只对于静态变量)
来自 <http://www.runoob.com/php/php-variables.html>
抽象类:abstract关键字定义抽象类和抽象方法。当一个类被定义为抽象类时,它将会禁止实例化,而只允许其他类继承。
属性:受保护的字段。通过强制在方法中访问和操作字段,一方面保护字段,另一方面允许像访问字段一样访问数据。
处理并使用属性的功能。在两个函数getName()和setName()为属性name分别创建获取方法和设置方法。并可以在函数中设置响应的语句实现功能。
__set() 该方法主要负责隐藏字段的赋值实现,并在为类字段赋值之前验证类数据,接受一个属性名和相应的值作为输入,如果方法成功执行就返回true,否则返回false。
方法:用来定义类的行为。类中的方法可以完成指定的功能,并且可以有一个返回值;同样也可以接受输入参数,并对该数字做出校验。调用方法的格式如下:
Object->method_name(); 一个类被实例化后,可以使用->关键字引用该对象中的属性和方法。
声明方法:可以在类中创建一个方法,其语法格式和函数的创建相同,但类中的方法都必须使用public、protected或者private等作用域定义。若没有设置关键字,默认作用域为public。
构造函数:主要是在定义对象实例化时,自动执行的代码。构造函数可以接受参数或有默认值。可以定义一个类来建立一个对象并将其属性完全放在一个语句中,语法:
Function __construct({arg1,arg2,…,argn}){方法体}。
在构造函数中不仅可以调用类本身的方法,还可以调用其他类的构造函数,调用其他类的构造函数的语法格式为:classname::__construct();在子类中也可以调用父类的构造函数。
析构函数:__destruct() ,如果没有定义析构函数,在PHP中也可以自动进行内存管理,清除不再需要的对象。
类/对象函数:class_exists(string $class_name),判断类是否存在。
get_class(object object) 返回所属类的类名。
method_exists()函数 如果方法名所指的方法在对象所指的类中已定义,则返回true。
Interface_exists()函数:确定一个借口是否存在,如果存在则返回true。