PHP5-OOP变革,类与对象(一)----变革概述
最近想把项目从PHP4移植到PHP5上所以在日本看了些日本关于PHP5的文章。总结了下,相信有助于移植工作吧。
PHP5三大特点。
l 新的对象模式 (New Object Mode) Ø 构造函数和析构函数 Ø 对象的引用 Ø 对象的克隆 Ø 对象中的私有、公共及受保护模式 Ø 接口 (Interfaces) Ø 抽象类 Ø __call Ø __set 和 __get Ø 静态成员 l 异常处理 (Exceptions)
Ø 可以使用try及catch进行异常的处理且新增Exception类,用户可以继承该类来自定义异常内容。 l 名称空间 (Namespace) Ø 名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。 资料参考:http://www.phppro.jp/phpmanual/php/language.oop5.html
PHP5-OOP变革,类与对象(二)---自动引用类文件(__autoload)与构造函数(__construct)
1, 自动引用类文件。对于PHP的类来说,每次定义一个类都需要之前使用引用(require)之类的语句进行操作,无遗为PHP类的使用又增加了一个注意点。而对于PHP5来说可以在文件中使用“__autoload($class_name)”来自动对所要的类进行加载(引用)了。
下面的例子,说明了__autoload是如何使用的. 它假设当前目录下每个文件对应一个类. 当脚本尝试来产生一个类MyClass1的实例,PHP会执行__autoload. 脚本假设MyClass1.php中定义有MyClass1类,若用户在定义MyClass2时,__autoload也会去特定路径下加载MyClass2.php文件。
function
__autoload(
$class_name
) {
include_once
'../
cls/
'
.
$class_name
.
'.php'
;
}
$obj
= new
MyClass1();
$obj2
= new
MyClass2();
?>
说明:关于autoload的具体使用请参见之后写的"PHP5—OOP,__autoload(类文件自动加载规则)的定义方法及分析(自创)"一文。需要自定义自动加载类的路径,另外,对于动态加载类方法,可以使用“__call()”来动态的增加对象的方法
2,构造函数,在PHP5中可以使用统一的类构造函数名。“__construct()”(从VC++中学到的)。这样做的好处是,若类名改变,不需要再改变其构造函数名称,如下示例:
void __construct ( [mixed args [, ...]] )
说明:当父类中没有构造函数而子类有,默认处理即可,但当父类中有构造函数,子类在调用自身构造函数的同时调用父是必要的(即,PHP还不会将构造传递下去),parent::__construct();
class
BaseClass
{
function
__construct() {
print
"In BaseClass constructor\n"
;
}
}
class
SubClass
extends
BaseClass
{
function
__construct() {
parent
::
__construct();
print
"In SubClass constructor\n"
;
}
}
$obj
= new
BaseClass();
$obj
= new
SubClass();
?>
说明:在类中使用“
__destruct()
”可以释放删除该类,对于
父类子类是否有,与构造时的处理相同。Parent::__destruct();
PHP5-OOP变革,类与对象(三)---OO中的访问权限关键字(public,private,protected)
3, PHP的OOP的访问权限。
在PHP5中,对于类变量的访问权限主要是通过以下关键字进行定义的:
public----公共变量,方法(在哪里都可以被访问且改变)
private----私有变量,方法(只能在类中定义或类中改变时访问且改变)
protected----受保护的变量,方法(不能被所继承的类所复写的变量或方法,即受保护不能由其继承的类改变。)
说明:在PHP4,5中没有加关键字的变量,方法,全都为public(公共变量)。
/**
* MyClass
の
定義
*/
class
MyClass
{
public
$public
=
'Public'
;
protected
$protected
=
'Protected'
;
private
$private
=
'Private'
;
function
printHello()
{
echo
$this
->
public
;
echo
$this
->
protected
;
echo
$this
->
private
;
}
}
$obj
= new
MyClass();
echo
$obj
->
public
;
//
動作
します
echo
$obj
->
protected
;
// Fatal
エラー
echo
$obj
->
private
;
// Fatal
エラー
$obj
->
printHello();
// Public
、
Protected
そして
Private
を
表示
します
/**
* MyClass2
の
定義
*/
class
MyClass2
extends
MyClass
{
// public
および
protected
メソッドは
再定義
できますが
、
// private
はできません
。
protected
$protected
=
'Protected2'
;
function
printHello()
{
echo
$this
->
public
;
echo
$this
->
protected
;
echo
$this
->
private
;
}
}
$obj2
= new
MyClass2();
echo
$obj
->
public
;
// 動作します
echo
$obj2
->
private
;
// 未定義です
echo
$obj2
->
protected
;
// Fatal エラー
$obj2
->
printHello();
// Public、Protected2 を表示しますが Private は表示しません
?>
/**
* MyClass の定義
*/
class
MyClass
{
// コンストラクタは public でなければなりません
public function
__construct() { }
// public メソッドの宣言
public function
MyPublic() { }
// protected メソッドの宣言
protected function
MyProtected() { }
// private メソッドの宣言
private function
MyPrivate() { }
// これは public となります
function
Foo()
{
$this
->
MyPublic();
$this
->
MyProtected();
$this
-></
分享到:
相关推荐
ExtJs学习资料14-OOP[JavaScript面向对象编程]
ABAP-OOP-Library, 面向对象的编程库 ABAP对象定位程序库安装手动创建下面列出的字典类型使用基于源类编辑器和常规编辑器来导入所有类。接口和程序。某些软件包使用邮件类。 这些消息保存在。messageclass 。txt文件...
在这一部分,你会了解到OOP的基本原理,包括类(Class)和对象(Instance)的概念。类是创建对象的蓝图,它定义了一组属性(Attributes)和方法(Methods)。对象则是类的具体实例,它们具有类定义的属性和行为。在...
F4-OOP.zip,面向对象编程
F4-OOP.zip(面向对象编程)
面向对象-OOP.md
面向对象软件开发技术(OOA-OOD-OOP)
"PyPI 官网下载 | bvx-oop-0.0.8.tar.gz"这个标题表明我们关注的是一个从PyPI下载的名为“bvx-oop”的Python库,其版本号为0.0.8,打包格式为tar.gz。 描述中提到的“资源全名:bvx-oop-0.0.8.tar.gz”,这进一步...
php-oop-fundamentals, 这个库伴随着Tuts+课程 PHP OOP基础 php-oop-fundamentals这个库伴随着Tuts+课程 PHP OOP基础什么是 OOP?在本课中,我们将看看面向对象的编程是什么,完全正确。 这看起来可以能很多,但是你...
标题中的"16M-OOP-源码"表明...总结,"16M-OOP-源码"可能包含了大量的面向对象编程实例,涵盖各种类定义、继承关系、多态实现以及可能的设计模式。通过深入研究这个代码库,开发者可以增强对OOP的理解,提升编程能力。
#include"iostream" using namespace std; class Circle { private: float Radius; public: void GetArea() { cout*Radius*Radius; } Circle(float radius) { Radius=radius; } ~Circle(){} ...}
面向对象编程(Object-Oriented Programming,OOP)是现代软件开发的核心理念之一,它将数据和处理数据的方法封装在对象中,通过类与对象的关系来构建复杂系统。在Java中,类是对象的模板,对象是类的实例,接口定义...
标题中的"project-oop-1-源码"表明这是一个关于面向对象编程(Object-Oriented Programming,简称OOP)的项目,可能是一个教学实例或者一个实际应用的代码库。源码通常包含了项目的全部代码文件,我们可以从中学习到...
Java面向对象编程基础 在计算机科学中,面向对象编程(OOP)是一种广泛采用的编程范式,它基于“对象”的概念,强调数据和操作数据的方法...阅读提供的"04-Java-OOP-Basics.pdf"文档,将有助于深化对这些概念的理解。
在软件开发领域,面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛采用的编程范式,它以“对象”为核心,强调数据与操作数据的方法相结合,使得代码更加模块化、可维护性更强。本资料主要围绕“软件...
python-oop:Python面向对象的编程 有关所有新数据,请参见Wiki !!! 核心,但仍然是附加组件 通常会忘记 。 但是,在许多情况下,最好使用词典。 附加组件 traitlite-是的,这与traitlets不同! 和 。 原子 ...
类与对象 在面向对象编程中,类(Class)和对象(Object)是两种基本概念。类是对象的蓝本,它定义了对象的属性和行为;对象则是类的实例,拥有独立的存在形式和内存空间。 类的基本定义 在PHP中,类的定义使用...
1. **类与对象**:在 ES6 之前,JavaScript 没有内置的类机制,但通过构造函数和原型链可以模拟类的行为。ES6 引入了 class 关键字,使得类的定义更加简洁。对象则是类的实例,可以通过 new 关键字创建。 2. **封装...
本Java-OOP-Exam压缩包包含了针对这一主题的笔试和机试题,旨在帮助学习者深入理解和掌握面向对象编程的精髓。 首先,我们来探讨一下面向对象的基本概念: 1. 类(Class):类是面向对象编程的基础,它是具有相同...
在压缩包文件名称"line-bot-oop-master"中,"line-bot"显然指的是与LINE聊天机器人的关联,"oop"代表面向对象编程,这表明该项目的代码结构是按照面向对象的原则来组织的,有利于代码的复用、模块化和维护。...