php类
2015-08-14 10:57:11 21 举报
AI智能生成
php类
作者其他创作
大纲/内容
重载
php中不能定义同名的方法,但在父子关系的两个类中,可在子类中定义和父类同名的方法(即把继承过来的方法覆盖了)
在子类的方法中调用父类被覆盖的方法:“类名: :父类中的方法名” 或 “parent : : 父类中的方法名称”推荐后者
继承也适应于构造方法(调用被覆盖的构造方法也同样适用)
封装访问修饰符
public公有修饰符(如果类的成员没指定成员修饰符将被视为public) 该类成员能被所有内外部访问(包括本类 子类 其它类 实例等)
protected保护成员修饰符 该成员只能被该类的内部及其子类访问(能在子类中重新定义) 该类的对象实例不能直接访问
private私有修饰符 该成员只能被本类成员访问 该类的对象实例不能直接访问
当然无论什么修饰符 子类或是实例对象都可通过能访问到的方法间接访问到 如类中公有方法中可访问任何成员(那其子类及实例对象可通过该方法做接口间接访问到)
常用关键字
$this
在对象外部访问对象中成员 “对象名->成员”$this作用域只表示类的当前实例
对象内部的方法访问本对象内的方法或属性 $this->成员(注:成员前无$符号) php中提供了一个本对象的引用$this
(即每个对象里面都有一个对象的引用$this来代表此对象)
self
: : 作用域限定操作符,self作用域 self::表示的是类本身
指向类本身,而不是任何已实例化的对象,一般用来指向类中的静态成员 self : : $静态属性名
static
静态变量:函数内定义的静态变量(函数结束后不会释放,变量值会累计)
用于定义类的静态成员(静态属性和静态方法) 类名: :$属性名(类内/外部访问的方式) 或 self: :属性名(类内部方法访问本类属性)
不能用对象来直接访问静态成员
final
只能用来定义类和方法不能定义成员属性(php中定义常量用define()函数)
final定义的类不能被继承(继承的话会报错)
final定义的方法不能被子类覆盖(覆盖的话会报错)
const
php中定义常量用的是define( )函数
访问方式类似于类的static成员
类中定义常量(如在程序中改变其值会报错)
在类外部访问常量 类名 : : 常量名
在类内部方法中 self : : 常量名 注:没$标识 因为是常量
不能用对象来访问常量
: :
用在重载方法时;
用在静态成员;
用在类常量;
self 用于类静态成员及类常量中。
构造与析构
_ _construct()
构造函数可以被继承(可在类中任何位置定义不非得开头位置)
可带形参,在创建对象时赋值给对象属性
可调用类方法和其它函数
可调用任何类(含父类)的构造函数 类名: :__constructor()
一个类中只能声明一个构造方法且每次创建对象时都会自动调用 (不能主动调用)
_ _destruct()
在某个对象的所有引用都被删除或当前对象被显示销毁时自动执行(不带任何参数)
常用方法
_ _clone
当对象被克隆时,被调用。根据一个对象克隆出一个一模一样的对象(且克隆后对象间互不干扰)
_ _toString()
当打印一个对象的时候被调用,这个方法类似于java的toString方法,当直接打印对象的时候回调用这个函数返回的字符。
当然如果类中没有定义 _ _toString( )那echo 该类实例时就会报错。_ _toString( )必须有返回值。
_ _call
当试图调用一个对象并不存在的方法时,调用该方法。
这样程序就不会因为报错而停止运行了。
有两个参数1:不存在的方法名;
参数2:该方法的多个参数以数组的形式传进来。
_ _autoload()
当一个php文件中需要调用另一个文件中声明的类时,就需要通过include把该文件引入(当项目很大时就很麻烦,定义此函数 会在使用未定义的类时自动调用,前提是类文件以科学的文件名组织好。详见P135)。
_ _unset()
unset( )删除指定的变量且返回true
其它类似于_ _isset( )
_ _isset()
isset( )用来测定本类是否设定(也可测定类的公有成员)如果传入的变量存在则返回true否则返回false
如果类成员是私有的isset( )就不起作用了,但在类中定义 _ _isset( )即可在类外部用isset( )测定类私有成员时自动调用类中的_ _isset()来帮我们完成操作
_ _get()
如试图读取对象并不存在的属性时,PHP就会报错。如在类里添加__get方法,我们可以用这个函数实现类似java中反射的各种操作
多应用于对类私有成员的访问(因为类外部无法访问)
_ _set()
当试图向一个并不存在的属性写入值的时候被调用
多应用于对类私有成员的访问设置(因为类外部无法访问)
0 条评论
下一页