2010中最新PHP类的精髓,第1页2

1:结构和调用(实例化):

类的类名{ },电话:$ obj =新的类名();当一个类有一个构造函数,参数也应通过。比如$ obj =新的类名($ V $ V2);

二:构造函数和析构函数:
1。构造函数用于初始化:使用__construct(),参数。
2。但析构函数不能带参数(用于销去上课之前执行一些操作或功能),析构函数被__destruct()。在脚本执行结束时,PHP将内存中的对象的出口,所以它可以没有创造功能,但他们中的一些人,如饼干,应该放弃这个功能。
知识点:在PHP4中还提供了一个构造函数,但使用的方法具有相同名字的类,还可以用这种方法可以兼容的,当一个类不包含__construct,搜索方法,具有相同名字的类,如果找到了,那就是构造函数,如下:
类测试
{ var;
函数测试(){ $ = B = 5;}
功能ADDAB($ C){ return美元-> B + C美元;}
}
美元=新(测试);echo $ -> ADDAB(4); / /返回9
3,PHP不会自动调用父类的构造函数(不支持构造函数重载),并且必须用父关键字显式调用。
员工类{
__construct()函数…
}
类管理器范围雇员{
功能__construct(){
家长::_construct();
调用这个子类的父类构造函数!;
}
}
当然,你也可以叫,没有任何的实例的其他类的构造函数,只加类名前__construct(等):
otherclassname::__construct();

类的主要家庭成员:属性、方法、常量、静态成员

三。类的属性:
有两种方法分配或赋值类的属性。
1、使用公共领域的公钥词。
2、使用__set()和()__get分配和价值分别。前者称为设置方法(setter)或改性方法(mutator),后者称为存取方法(accessor)或采集方法(吸气),建议使用这种方法:优点:
一、数据验证可以在__set进行()。
B,易于统一管理属性。
小心 uff1a
第一:__set()和()__get只对私人财产的行为,定义为公共财产,两人会回应,如下:
类测试{
受保护的$ = 9,$ = 2,美元;
公共单位D;
功能__set($,$ V){ $这-> $ N = $ V 2;}
功能__get($name){ return美元-> $name + 2;}
}
$ =新测试();
$ ==5;;
美元,美元,美元和C B的实例,将过滤和__set和__get回来,它不会排放美元例子,美元-> D = 5,返回5。
第二:__set($,$ V)有两个参数,__get(N)只能有一个实例uff1a参数。
类测试{
私人$ = 5,$ = 6,C;
功能__set($,$ V)
{
如果(N = =$ N>0)
$ $;
其他的
$ $ > $ = $ v + 2;
}
功能__get($name)
{
返回这个-> $name; / /如果改回+美元-> ADDAB(美元-> $name);如调用的值,实际收益是一个+ +的默认值是5 + 5 + 6 = 16。
}
AddAB()函数
{返回$这一点;
}
$ =新测试();
$ = a = 11;说明:写类$ $ n内部变量方法,但外部实例使用$ > >方式。
$ = 12;14
$ = K = 22;

自由膨胀的性质,在K的例子,无论是否使用__set,当实例的设置,你可以使用$ E -> newproperty = XX;创建一个属性,但不建议。


四。The method of class:
理解课堂上的功能。
呼叫:
1、内部电话:可以使用美元->粉丝名();或美元-> ADDAB()或测试::AddAB();
2。当实例化调用,使用$ E -> ADDAB();$这个关键词是不使用这种方法,如在上面的例子中:
函数的AddAB(){ return美元-> +美元-> b;}
改为:函数AddAB(){ return 25;},也可以称之为::AddAB();或测试::AddAB()在一个外部的实例;

五。班级的常数:
如果一个类的属性被理解为一个类中的变量,那么类的常量与变量不同,它的定义是:
类测试{
私营的;
常量PI = '3.14;
的…
在类pi或类名称中使用上面的调用:常量$::::pi,如下所示:pi,测试:
功能getValue(){
还可以使用这个关键字或类名,但是应该使用双冒号。
}
}
$ =新测试();
$ = PI = 5; /注,这里是- >创建一个名为pi的属性,而不是pi常数的值的变化。
常量:这个常量的调用。
常数只能用于双冒号:调用,不能更改其值。
在一个类的外部实例化之后,还有两种调用类常量的方法:
$::pi或测试::pi,通用点是使用冒号,不同的点是外部不能使用此关键字,只使用实例名,但类名::pi是通用的。

六。类的静态成员(静态或静态方法):
如果需要创建一个所有类的实例共享的字段或方法,则必须使用静态成员:
1,静止的党员是共产党员。它调用脚本上类的所有实例,但不能由类的特定实例名调用它。相反,它调用类名的方式:成员名。
2。当每一个新的实例被创建,静态成员开始重新从实例上创造的价值最后的时间,而不是在类的初始值。
三.对于使用公共定义的静态成员,可以在外部更改。
类测试{
公共静态$ = 0;
功能__construct(){自::$ V + +;}
静态函数(){ return GETV自::$ V;}
}
$ =新测试();
回声(测试::GETV); / /返回1
$ =新测试();
回声(测试::GETV); / /返回2
测试::$ = 8;作为公共定义的成员,更改静态成员的值。
$ =新测试();
回声(测试::GETV); / /返回9

七。关键词:
(1)这个关键字:内部引用类本身被用于类。访问属性或方法或常量,如$ - <属性名或方法名。$::常量名称。这也可以用于类的子类中,引用它自己的属性或方法。
(二)双冒号:关键字:用于调用常量、静态成员。
(三)自关键词:调用静态成员在类和双冒号,如自我::$静止无功,并且不使用美元,这叫静态成员在类。
(四)__tostring():使用__tostring()中的一类将类转换为一个字符串并打印类很少使用:例如:
类测试{公共$ P;
公共功能__tostring(){ return var_export($,true);}
}
$ =新测试();
回声$ / /;输出:测试::__set_state(阵列('p' = null)),或美元-> __tostring(回声);
(五)__clone():这个关键词时发生的对象是克隆的,是用来改变某些值时,克隆是克隆。
(六)__call():方法重载,看看下面的例子:
CB级{
功能__call($法$ N){
如果($方法= = 'showvartype){
如果(is_numeric($ N { 0 })){ / /不n.use美元$ N { 0 };
美元-> displaynum();
} else if(is_array($ N { 0 })){
美元-> displayarr();
其他{ }
美元-> displayother();
}
}
}
功能displaynum(){
这是数字!;
}
功能displayarr(){
这是一个数组!;
}
功能displayother(){
回声不是数组或数字!;
}
}

为x = a;
Y元=阵列(A,B);
$ =新CB;
$ B -> showvartype(X元); / /不是数组不是数字
$ B -> showvartype(Y元); / /这是一个数组
请注意,showvartype()方法不能在类定义的代码,否则不能使用。
(七)扩展:继承:类A,如类{ }类B扩展一个{ B,继承类A


附:内存:在调用的方法或属性之后的统一

八、方法和属性的范围:
共有6种类型:公共(默认情况下,可以省略,相当于php6 var声明,私人(民营),也不受保护的使用(私人),但是,通过使用抽象(抽象),人参,下同),最终(停止在子类中覆盖也称重站继承,是用来修改类名和方法,如最终类测试{最终功能(好玩){ } },而不是财产),静态(静态)

九:抽象类和抽象方法(抽象:注释:没有抽象属性):
摘要这是父类定义一个模板或基类的一个子类可以理解。范围摘要仅是父类中声明,而在类中实现。注意事项 uff1a
1。抽象类不能实例化,只能在子类(特定类)继承后继承。
2,抽象类必须在其子类中实现抽象类的所有抽象方法,否则会出错。
3、在抽象的方法,只有声明,但没有具体的实现:如抽象函数gettow(返回){ $这-> P };这个语句是错误的,唯一的功能(gettow):摘要(用方括号{ };不显示),在复杂的主要的类层次抽象方法和抽象类。这个层次需要确保每个子类包含和超载的特定方法。这也可以通过接口实现
4,属性不能被命名为抽象属性,如抽象$ = 5是错误的。
5。只有被声明为抽象的类才能声明抽象方法,但是如果方法声明是抽象的,则不能实现:
抽象类员工
{
抽象函数A(…);
抽象函数B(…);
}
在未来,父类的扩展,形成多种亚型(如管理者、员工、收银员)。
6,在抽象类中,如果要实现一个特定的方法,它不能被声明为抽象的,这可能更有意义。几个类库的公共部分可以被提取到抽象类中,而其他类则继承抽象类:
抽象类baseshop {
常量税= 0.06;在抽象类中定义常量
公共功能购买($ GID){ / /如果定义为抽象函数(买)抽象方法不能实现主体在这里。
回声(你买了ID为:美元。GID。'货物');
}
公共功能卖($ GID){
回声(你卖ID为:美元。GID。的物品);
}
公共功能视图($ GID){
回声(你看身份证:美元。GID。的物品);
}
}
类ballshop延伸baseshop {
VaR itme_id美元= null;
公共功能__construct()
{
美元-> itme_id = 2314;
}
公共功能开放()
{
美元(美元->销售-> itme_id);
}
公共功能gettax()
{
回声printf(平均税率是%1。',美元::税×100);
}
}
$ S =新ballshop;
美元开(ID);您出售货物:2314
美元店-> gettax();