标签: PHP

面向对象程序设计之 PHP(七):关于__get(),__set(),__isset(),__unset()方法

一般说来,把数据声明为 private 进而封装起来更符合现实逻辑,然而,在对象外部对已封装的数据进行读写操作往往非常频繁,虽然可以像上文那样为每个数据都编写一个 getxxx() 和 setxxx() 方法,但这就意味着程序里面会出现非常多的 getxxx() 和 setxxx() 方法。一旦由于某些原因而导致类内部的 get 或者 set 方法需要重新命名,那需要修改的地方将会是茫茫多……

于是,从 php5 开始,php 给我们预定义了 4 个方法:

function __get(){
}

function __set(){
}

function __isset(){
}

function __unset(){
}
继续阅读

面向对象程序设计之 PHP(六):封装性

前文说到,封装性是面向对象的三大特征之一。它的核心思想在于把数据域隐藏,使其相对独立并提供相应的方法对其进行操作。它的好处在于能有效防止数据被篡改以及使得类更易于维护。封装性强调以下两点

  • 把对象的属性和方法结合,形成一个不可分割的独立单位
  • 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系

封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的”交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。

继续阅读

面向对象程序设计之 PHP(五):构造函数与析构函数

大多数类都有一种称为构造函数的特殊方法。每当由该类实例化创建一个对象时,程序将自动调用其构造函数,也就是使用 new 这个关键字来实例化对象的时候会自动调用构造函数。构造函数的声明与其它操作的声明一样,只是其名称必须是 __construct()。这是 php5 中的变化,以前的版本中,构造函数的名称必须与类名相同这种在 php5 中仍然可以用,但现在以经很少有人用了。统一使用 __construct() 这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称。为了向下兼容,如果一个类中没有名为 __construct() 的方法,php 将搜索一个 php4 中的写法,与类名相同名的构造方法。

继续阅读

面向对象程序设计之 PHP(四):特殊的引用$this

通过前边的的学习我们已经了解了如何去定义一个类,如何由一个定义好的类实例化出对象与使用该对象中的成员。我们知道要在外部调用一个对象的某个成员用的是” $对象名 -> 成员名 “这样的语法,那么如果对象本身要引用到对象本身的成员,如何从对象内部来调用一个对象的成员呢。这就要用到我们的特殊引用 $this

继续阅读

面向对象程序设计之 PHP(二):类的抽象与定义

我们知道,面向对象程序的单位就是对象,而对象又是通过类的实例化出来的,所以,我们首先要做的就是声明一个类。做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来。如下所示:

class 类名{

    //在这里部署代码

}

使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构就定义出来了。但光有结构是不够的,更重要的是里面的内容,下面我们就以“人”为模板,来编写一个类。

我们在描述一个“人”时,通常都会把描述分为两部分:一是描述一些特征如人的姓名,性别,年龄,身高……;二是描述一些他能做的事情:会讲英语,会编程序……。在编程的时候,我们通常把静态的特征定义成属性,用来描述这个类或者实例,把能做些什么,定义成方法或者叫函数(Java里面爱叫方法而C++里面爱叫函数)

class 人{

    成员属性:姓名,性别,年龄,身高,体重,电话,家庭住址……
    成员方法:会讲英语,会编程序,会做设计……

}
成员属性的定义:

通过在类定义中使用关键字” var “来声明变量,即创建了类的属性,虽然在声明成员属性的时候可以给定初值, 但是在声明类的时候给成员属性初始值是没有必要的,比如说要是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张三了,所以没有必 要, 我们在实例出对象后给成员属性初始值就可以了。

<!--?php 

class classname{

    var $somevar; //声明变量

}

?-->
成员函数的定义:

通过在类定义中使用如的以下例子来声明函数,即创建了类的方法。每个由该类实例化的对象都享有这些方法

<!--?php 

class classname{

    function somefun(参数列表){ //定义函数

          //代码

    } 

}

?-->

下面我们就可以把“人”来模拟成一个类了

<!--?php 

class person {

    var $name;
    var $sex;
    var $age;
    var $hight;
    var $weight;
    var $phoneNum;
    var $address;

    function canSpeakEnglish() {
        echo "I can speak English";
    }

    function canProgram() {
        echo "I can program";
    }

    function canDesign() {
        echo "I can design";
    }

}

?-->

上面就是一个类的声明, 从属性和方法上声明出来的一个类。如果你已经掌握了以上定义类的步骤与方法,那用同样的方法你也可以写出别的类,比如圆类:

class 圆{

    成员属性:半径长度
    成员方法:求周长和面积

}

代码如下:

<!--?php 

class circle {

    var $radius;

    function getGirth() {
        echo 2 * 3.14 * $this->radius; // $this->radius 用于调用 $radius,第三第四章会详细介绍
    }

    function getArea() {
        echo 3.14 * $this->radius * $this->radius;
    }
}

?-->

至此,你也能写出一个类啦!要不,赶紧写个矩形的类试试?

面向对象程序设计之 PHP(一):面向对象程序设计,类,对象

面向对象程序设计(Object Oriented Programming, OOP),有别于面向过程程序设计(Procedure Oriented Programming, POP),它强调“对象”这一个概念,面向对象程序设计就是使用对象进行程序设计。要理解什么是面向对象程序设计,就不得不先理解两个概念————“对象”和“类”。那么,什么是“对象”,什么是“类”呢?

继续阅读

版权所有 © 2025 吴嘉豪的博客

主题设计 Anders Noren返回顶部 ↑