PHP新手之学习类与对象_第1页
PHP新手之学习类与对象_第2页
PHP新手之学习类与对象_第3页
PHP新手之学习类与对象_第4页
PHP新手之学习类与对象_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——PHP新手之学习类与对象对于PHP程序设计语言来说,每个人的学习方式不同。下面是我共享的PHP新手之学习类与对象,接待大家参考!

一、根本概念

1、class

每个类的定义都以关键字class开头,后面跟着类名,可以是任何非PHP留存字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。伪变量$this可以在当一个方法在对象内部调用时使用。$this是一个到调用对象通常是方法所属于的对象,但也可以是另一个对象,假设该方法是从其次个对象内静态调用的话的引用。看下面例子:

Example#1面向对象语言中的$this变量

foo;A::foo;$b=newB;$b-bar;B::bar;?

上例将输出:

$thisisdefineda$thisisnotdefined.$thisisdefinedb$thisisnotdefined.

Example#2简朴的类定义

var;?

Example#3类成员的默认值

2、new

要创造一个对象的实例,务必创造一个新对象并将其赋给一个变量。当创造新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个奇怪。

Example#4创造一个实例

复制代码当把一个对象已经创造的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创造的对象建立一个新实例。

Example#5对象赋值

var=$assignedwillhavethisvalue;$instance=null;//$instanceand$referencebecomenullvar_dump$instance;var_dump$reference;var_dump$assigned;?

复制代码上例将输出:

NULLNULLobjectSimpleClass#11[var]=string30$assignedwillhavethisvalue

3、extends

一个类可以在声明中用extends关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被笼罩,除非父类定义方法时使用了final关键字。可以通过parent::来访问被笼罩的方法或成员。

Example#6简朴的类继承

displayVar;?

上例将输出:

Extendingclassadefaultvalue

二、自动加载对象

好多开发者写面向对象的应用程序时对每个类的定义建立一个PHP源文件。一个很大的烦扰是不得不在每个脚本每个类一个文件开头写一个长长的包含文件列表。

在PHP5中,不再需要这样了。可以定义一个__autoload函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在PHP出错失败前有了结果一个机遇加载所需的类。

Note:在__autoload函数中抛出的奇怪不能被catch语句块捕获并导致致命错误。假设使用PHP的CLI交互模式时,Autoloading不存在。

Example#1Autoload例子本例尝试分别从MyClass1.php和MyClass2.php文件中加载MyClass1和MyClass2类。

三、构造函数和析构函数

1、构造函数

void__construct[mixed$args[,$...]]

PHP5允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创造对象时先调用此方法,所以分外适合在使用对象之前做一些初始化工作。

Note:假设子类中定义了构造函数那么不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct。

Example#1使用新标准的构造函数

复制代码为了实现向后兼容性,假设PHP5在类中找不到__construct函数,它就会尝试探索旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的处境是:类中已有一个名为__construct的方法,但它却又不是构造函数。

2、析构函数

void__destructvoid

PHP5引入了析构函数的概念,这类似于其它面向对象的语言,如C++。析构函数会在到某个对象的全体引用都被删除或者当对象被显式销毁时执行。

Example#2析构函数例如

name=MyDestructableClass;function__destructprintDestroying.$this-name.;$obj=newMyDestructableClass;?

复制代码和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,务必在子类的析构函数体中显式调用parent::__destruct。

Note:析构函数在脚本关闭时调用,此时全体的头信息已经发出。试图在析构函数中抛出一个奇怪会导致致命错误。

四、访问操纵

对属性或方法的访问操纵,是通过在前面添加关键字public、protected或private来实现的。由public所定义的类成员可以在任何地方被访问;由protected所定义的类成员那么可以被其所在类的子类和父类访问当然,该成员所在的类也可以访问;而由private定义的类成员那么只能被其所在类访问。

1、对类成员的访问操纵

类成员都务必使用关键字public、protected或private举行定义

Example#1声明类成员

public;echo$this-protected;echo$this-private;$obj=newMyClass;echo$obj-public;//这行能被正常执行echo$obj-protected;//这行会产生一个致命错误echo$obj-private;//这行也会产生一个致命错误$obj-printHello;//输出Public、Protected和Private/***DefineMyClass2*/classMyClass2extendsMyClass//可以对public和protected举行重定义,但private而不能protected$protected=Protected2;functionprintHelloecho$this-public;echo$this-protected;echo$this-private;$obj2=newMyClass2;echo$obj-public;//这行能被正常执行echo$obj2-private;//未定义privateecho$obj2-protected;//这行会产生一个致命错误$obj2-printHello;//输出Public、Protected2,但不会输出PrivateclassBarpublicfunctiontest$this-testPrivate;$this-testPublic;publicfunctiontestPublicechoBar::testPublic;privatefunctiontestPrivateechoBar::testPrivate;classFooextendsBarpublicfunctiontestPublicechoFoo::testPublic;privatefunctiontestPrivateechoFoo::testPrivate;$myFoo=newfoo;$myFoo-test;//Bar::testPrivate//Foo::testPublic?

Note:为了兼容性考虑,在PHP4中使用var关键字对变量举行定义的方法在PHP5中依旧有效只是作为public关键字的一个别名。在PHP5.1.3之前的版本,该语法会产生一个E_STRICT警告。

2、对方法的访问操纵

类中的方法都务必使用关键字public、protected或private举行定义。假设没有设置这些关键字,那么该方法会被设置成默认的public。

Example#2声明类中的方法

MyPublic;$this-MyProtected;$this-MyPrivate;$myclass=newMyClass;$myclass-MyPublic;//这行能被正常执行$myclass-MyProtected;//这行会产生一个致命错误$myclass-MyPrivate;//这行会产生一个致命错误$myclass-Foo;//Public、Protected和Private都被调用了/***DefineMyClass2*/classMyClass2extendsMyClass//ThisispublicfunctionFoo2$this-MyPublic;$this-MyProtected;$this-MyPrivate;//这行会产生一个致命错误$myclass2=newMyClass2;$myclass2-MyPublic;//这行能被正常执行$myclass2-Foo2;//Public和Protected都被调用了,但Private不会被调用?

五、范围解析操作符::

范围解析操作符也可称作PaamayimNekudotayim或者更简朴地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于笼罩类中的成员和方法。

当在类的外部访问这些静态成员、方法和常量时,务必使用类的名字。

把PaamayimNekudotayim选作该操作符的名字貌似有些古怪。然而,这是Zend开发小组在写ZendEngine0.5被用于PHP3中时所作出的抉择。事实上这个词在希伯莱文就是双冒号的意思。

E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论