五环小胖子的博客

PHP面向对象学习笔记一

2013-07-09
Ryan
php

一、写在前面的话

随着软件的发展,面向对象在软件开发过程中扮演者重要的角色。面向对象不同于传统的面向过程的开发方式,它是一种对显示世界的理解和抽象,是计算机编程技术发展到一定阶段的产物。在web开发中使用面向对象的思想,也是对现今敏捷开发的一种相应。

面向对象的方法能更有助于我们去把握开发的周期,控制开发的成本,提高软件的可维护性以及代码的可重用性。

PHP作为一网页中的脚本语言,随着发展也融入了面向对象的方法,web应用程序的日益复杂,使用面向对象的方法也给我们的开发带来了高效。很多的PHP框架都是基于面向对象开发的,比如国内比价流行的开发框架ThinkPHP。

无论他是什么语言,是鸟语好不好,面向对象总会保持着它那三大特征,即封装,继承和多态。这一篇文章我主要想记录一下关于封装的特征。

二、PHP中封装的运用

是对象就脱离不了,类、属性、和方法,把现实中的实物,经过抽象,可以封装成一个类,这个类里面有着自己的属性和它的行为。

1、类的定义

<?php
class Myclass{
    //这里面写你的代码
}
?>

2、构造函数

<?php
class Myclass{
    public function __construct{
        ...
    }
}
?>

3、析构函数

构造函数是初始化类的时候用的,有初始化那就有销毁这个类的函数,我们叫它析构函数,C#的程序员可能不是很了解这个,微软把这个做成了垃圾自动回收机制;而C++程序员肯定很了解了。PHP中其实我们使用一个叫__destruct的函数,这个函数我们可以不定义的,当类执行完后他会自动调用,当然,如果你需要在类销毁的时候处理一些特殊的代码,你可以写出来

<?php
class Myclass{
    public function __destruct(){
        ...
    }
}
?>

4、对象初始化

上面说了类的初始化函数和销毁函数,还没有说类如何初始化,其实在PHP中和在C#中一样的,用new这个关键字。

5、属性

<?php
class Myclass{
    public $myattribute;
    public function __construct($name){
        $this->myattribute = $name;
    }
}
$obj = new Myclass('rui');
?>

代码中我定义了一个名为myattribute的属性,同时我还定义了一个带有参数的构造函数,这个参数值付给属性,初始化类的时候这个属性就有了一个’rui’的值。

其实我们还可以这样做:

$obj->myattribute = ‘ruirui’;

属性会被付一个新的值’ruirui’。在构造函数,我用到一个$this的指针,它的作用是使用当前对象的一个属性或方法,这个指针很有用,请大家牢记!!!

我们看到在外部可以直接访问定义的属性,其实这样做很是糟糕,更好的做法是定义方法去对属性进行访问或操作,值得庆幸的PHP已经为我们准备好了这个方法,__get(),__set()

<?php
class Myclass{
    private $myattribute;
    public function __get($property){
        return $this->$property;
    }
    public function __set($property,$value){
        $this->$property = $value;
    }
    public function __construct($name){
        $this->myattribute = $name;
    }
}
?>

在外部调用myattribute属性,__get,__set会被自动执行。这里我只是抛砖引玉,对于__get和__set的运用还请大家多查查资料。

6、方法

<?php
class Myclass{
    ...
    public function display(){
        ...
    }
}
?>

$obj->display();这样就可以调用类的方法了,看,是不是很简单呢!!!

7、访问控制

public我想不用多说,有这个修饰符,在外部我们可以访问他所修饰的方法和属性。

protected,在类外部是不可以访问的,但在类的继承中,子类是可以继承他所修饰的方法和属性。关于类的继承我们随后再说。

private,任何情况下都不可以访问。


Similar Posts