龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP面向对象精要总结

时间:2014-11-09 02:51来源:网络整理 作者:网络 点击:
分享到:
这篇文章主要介绍了PHP面向对象精要,较为详细的介绍了PHP面向对象程序设计中的各种概念与常见技巧,非常具有实用价值,需要的朋友可以参考下

本文实例汇总了PHP面向对象程序设计的精要。分享给大家供大家参考。具体分析如下:

1 使用extends实现继承以及重载、魔术方法的含义

class B extends A
声明的时候B里可以没有A里的方法
调用的时候:

$b=new B();
$b->A里的方法();
$b->A里的属性=1;
$b->B里的方法();
$b->B里的方法();

如果$a=new A();
可以
$a->A里的方法();
$a->A里的属性=1;
不可以
$a->B里的方法();
$a->B里的方法();
 
重载:B继承A ,B里实现和A同名的方法属性。
PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的 类方法,但各方法的参数类型和个数不同。
 
魔术方法:PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以 __为前缀。
 
2 继承用private和protected访问修饰符可见性

属性方法private不可以被继承
属性方法protected类外部不可见,可以被继承
属性方法public 所定义的类成员可以在任何地方被访问

3 php中双冒号::的应用

php类代码中常看到"::"的操作符,这个是作用域限定操作符,是用一个双冒号"::"表示,它用来置顶类中不同作用域的级别。左边是作用域右边是访问作用域的成员。
在php中定义的作用域有self和parent两种(在php6中提供了static作用域)。
 
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于子类覆盖父类中的成员和方法。

复制代码 代码如下:
class MyClass {
    const CONST_VALUE = 'A constant value';
}

echo MyClass::CONST_VALUE;
class OtherClass extends MyClass
{
    public static $my_static = 'static var';

    public static function doubleColon() {
        echo parent::CONST_VALUE . "\n";
        echo self::$my_static . "\n";
    }
}

OtherClass::doubleColon();
//子类覆盖父类
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // 覆盖父类中的方法
    public function myFunc()
    {
        // 但仍然可以调用已被覆盖的方法
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();

4 php中this和self以及parent的作用

this:就是指向当前对象实例的指针,不指向任何其他对象或类。
self:表示当前类的作用域,与this不同的是它不表示类的某个特定实例,在类之外的代码中不能使用self,而且它不能识别自己在继承中层次的位置。也就是说,当在扩展类中使用self时,它调用的不是父类的方法,而是扩展类的重载的方法。self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。

复制代码 代码如下:
private static $firstCount = 0;
private $lastCount;

//构造函数
function __construct()
{
     $this->lastCount = ++self:$firstCount; //使用self来调用静态变量,使用self调用必须使用::(域运算符号)
}


parent:表示当前类父类的作用域,其余的跟self特性一样。parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。
复制代码 代码如下:
//继承类的构造函数
function __construct( $personSex, $personAge )
{
         parent::__construct( "test" ); //使用parent调用了父类的构造函数
         $this->personSex = $personSex;
          $this->personAge = $personAge;
}

5 构造函数与析构函数

精彩图集

赞助商链接