php类class详解,PHP Class类详解_PHP教程,json教程,apache教程,phpnow教程,php+mysql教程,mysql教程_我爱模板网 - 提供下载各种免费建站资源,免费网...

这部分主要是关于PHP5类和对象的基本使用,构造函数,析构函数和类的继承。

介绍

PHP4已经可以足够的支持对象,并且在任何大的项目或者小的程序中都可以看到对象的应用, 但是通过PHP5对象的使用我们可以建立一个更大的项目。我们知道,对象既非常有用,也非常灵活,也就是个原因我们很多人都经常使用。

但是你如果对于类和对象知道的不是很多,那么希望这篇文章会给你启发。我将会带领大家复习类和对象的基础,讨论PHP5对象和类的几乎每一个特点。我们从基础开始,类的自定义和适用。

请注意这篇文章不是关于OOP(Object Orientated Programming)的,讲解的OOP也是很少一部分而已。尽管你将会在这里学会如何使用对象,但是OOP是一个不同的概念,需要一整个思维模式的改变。显然,那需要更加灵活的使用类和对象。

那么让我们开始吧。

基本概念

通过Wikipedia知道"A class describes a collection of encapsulated instance variables and methods (functions)",一个对类非常好的定义。一个类有自己的变量,叫做属性,自己的函数,叫做方法。一个类的基本结构就像这个:

class MyCar {

// Properties and methods go here

}

?>

我们现在已经有了一个完整的类,尽管他还不能做什么,也没有任何属性。那么我们就让我们的类做点什么。看下面的例子:

class MyCar {

function drive() {

echo 'Vrooooom...';

}

}

?>

我们现在已经加了一个叫drive()的函数在我们的类中,他能够输出一段字符”Vroooom…“。一个类的函数我们通常叫他类的方法。

我们的类现在已经可以做些什么了,但是我们还是没有使用他,因为我们还没有建立类的一个实例。

为了能使用类,已经他的属性和方法,我们要使用‘new’关键字建立一个实例。通过类实例的建立,我们就可以建立一个对象了。看下面的例子:

class MyCar {

function drive() {

echo 'Vrooooom...';

}

}

$porsche = new MyCar();

$porsche->drive();

?>

如你所见,我们使用‘new’建立了一个属于MyCar类的实例$porsche。然后通过$porsche使用了drive()这个方法。

请注意,这很重要,类和对象是完全不同的概念。一个对象是一个单独的,或者说有自己特点的类的实例。比如说$porsche就是一个对象。而MyCar就是一个类。

你只能建立一个MyCar类,如果你试图建立两个叫做MyCar的类的话,那么就会出错。

而另一方面,你却可以建立多个类的实例。看下面的例子:

class MyCar {

function drive() {

echo 'Vrooooom...';

}

}

// Instance 1

$porsche = new MyCar();

$porsche->drive();

// Instance 2

$bmw = new MyCar();

$bmw->drive();

echo '';

// Instance 3

$volvo = new MyCar();

$volvo->drive();

echo '';

?>

在上面的例子中我们建立了三个MyCar类的实例,也就是说我们有三个对象 $porsche, $bmw 和$volvo。每个对象都有他自己的drive()方法。

就像我开始说的,一个类也可以有他自己的变量,叫做属性。看下面的例子:

class MyCar {

public $name;

function drive() {

echo 'Vrooooom...'. $this->name;

}

}

?>

我们做了两处修改。第一,通过“public $name;”添加了一个叫做$name的公用属性.第二,我们修改了drive()方法,他现在输出$name属性的值。

可以看到,我们使用$this->name来指向$name属性。

$this变量代表了当前实例,只能在类的内部调用类的方法和属性的时候使用。

看下面关于$name属性和变量$this使用的例子:

class MyCar {

public $name;

function drive() {

echo 'Vrooooom...'. $this->name;

}

}

// Instance 1

$porsche = new MyCar();

$porsche->name = 'Porsche';

$porsche->drive();

echo '';

// Instance 2

$bmw = new MyCar();

$bmw->name = 'BMW';

$bmw->drive();

echo '';

// Instance 3

$volvo = new MyCar();

$volvo->name = 'Volvo';

$volvo->drive();

echo '';

?>

运行上面的例子,你会看到每个对象的name属性是不同的。

构造函数/析构函数(Destruction)

建立一个类的同时,类中就会有2个特征方法可以使用了,他们就是构造函数和析构函数。在一个类的建立的同事就会主动去使用构造函数方法,他通常是用来初始化类的状态 。很典型的使用方法就是设置数据库的连接或者设置默认属性,下面我们举例说明如何使用构造函数:

class MyCar {

public $name;

function __construct($name) {

$this->name = $name;

}

function drive() {

echo 'Vrooooom... ' . $this->name;

}

}

$porsche = new MyCar('Porsche');

$porsche->drive();

?>

在上面的例子中,我们使用了构造函数来设置类的$name属性。如你所见,在建立一个类的实例的同时我们传入了一个参数。

而析构函数,是当对象被移除时用来运行的,通过unset()函数或者脚本的结束都可以移除实例。通常析构函数都是用来执行清除任务的,比如说数据库的关闭,保存数据到硬盘等等。

看下面使用析构函数的例子:

class MyCar {

public $name;

function __construct($name) {

$this->name = $name;

}

function __destruct() {

echo '*crash* this car has been destroyed';

}

function drive() {

echo 'Vrooooom... ' . $this->name;

}

}

// Instance 1

$porsche = new MyCar('Porsche');

$porsche->drive();

echo '';

unset($porsche); //脚本结束也会执行 __destruct()

?>

继承

继承是类使用方法里最伟大的发明,我们可以通过继承一个类来得到类中所有的方法和属性。

看下面关于类继承的例子:

class MyCar {

public $name;

function __construct($name) {

$this->name = $name;

}

function drive() {

echo 'Vroooom... ' . $this->name;

}

}

class PorscheCar Extends MyCar {

// Contains no properties or methods of its own

}

$boxster = new PorscheCar('Boxster 987');

$boxster->drive();

?>

'PorscheCar'类没有任何方法和属性,但是我们仍然可以使用drive()方法, 因为PorscheCar类继承了所有他父类MyCar的方法和属性。要继承一个类,就要使用Extend关键字,就像我们在例子中所看到的。

我们也可以在子类中重新定义类的方法来覆盖父类中的同名方法。

通过这种方法我们可以定义一个一般的类,和几个特殊的子类。

例如:

class MyCar {

public $name;

function __construct($name) {

$this->name = $name;

}

function drive() {

echo 'Vroooom...' . $this->name;

}

}

class PorscheCar Extends MyCar {

function drive() {

echo 'VROOOOOOOOM... ' . $this->name;

}

}

$boxster = new PorscheCar('Boxster 987');

$boxster->drive();

?>

如你所见,我们重定义的drive()函数输出了不同大的信息。

PHP5一个新的特征就是可以扩展父类的方法,重定义的完全替代。为了实现这点,需要用到“parent”:

class MyCar {

public $name;

function __construct($name) {

$this->name = $name;

}

function drive() {

echo 'Vroooom... ' . $this->name;

}

}

class PorscheCar Extends MyCar {

function drive() {

echo 'VROOOOOOOOM... ' . $this->name;

echo '';

// Call original method from parent class

parent::drive();

}

}

$boxster = new PorscheCar('Boxster 987');

$boxster->drive();

?>

输出结果:

VROOOOOOOOM... Boxster 987

Vroooom... Boxster 987

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值