日期:2014-05-17  浏览次数:20597 次

php5 学习记录(1)

一、php5主要的新特性

1.public /private/protected访问修饰符,针对对象中的方法和属性。

可以使用通用的面向对象访问修饰符来控制方法和属性的访问级别:

class MyClass {

    private $id = 18;

    public function getId() {
        return $this->id;
    }
}
?

2.统一的构造函数名称__construct().

为避免构造函数的名字和类的名字相同,现在用__construct()来声明,从而让你更加容易在类的分层中转移类:

?

class MyClass {
    function __construct() {
        print 'Inside constructor';
    }
}

?

? 3.通过__destructor()定义对象的析构方法。

允许定义一个析构函数来注销一个对象:

?

class MyClass {
    function __destruct() {
        print ' Destroying object';
    }
}

?

? 4.接口。

一个使用接口的类可以加载不止一个相关的接口。一个类只能继承自另一个类,但是可以实现任意多个接口:

?

interface Display {
    function display();
}
class Circle implements Display {
    function dispaly() {
        print ' Dispalying circle \n';
    }
}

?

? 5.instanceof操作符。

instanceof用来检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。

?

if ($obj instanceof Circle) {
    print '$obj is a Circle';
}
?

?

?

6.Final 标记方法。

Final关键字允许你用来标识方法,使其不能被子类重载。

?

class MyClass {
    final function getBaseClassName() {
        return __CLASS__;
    }
}
?

?

7.Final标记类。

声明一个类为final类型后,它将不能被继承。下面的例子将报错。

?

final class FinalClass {
}

class BogusClass extends FinalClass {
}

?

?

8.强制复制对象

为了克隆一个对象,你必须使用clone关键字。你可以再类中声明一个__clone()方法,它将在克隆过程中被调用(调用在属性和方法从原对象复制过来以后进行):

?

class MyClas {
    function __clone() {
        print 'Object is being cloned';
    }
}
$obj = new MyClass();
$obj_copy = clone $obj;
?

?

9.类中的常量。

类定义中现在包含常量,而且可以用类来引用:

?

class MyClass {
    const SUCCESS = "Success";
    const FAILURE = "Failure";
}
print MyClass::SUCCESS;

?

? 10.静态方法。

你现在可以定义静态方法,不用实例化就能使用他们。静态方法不能使用$this变量,因为它们并没有绑定到任何具体的对象:

class MyClass {

    static function helloWorld() {
        print 'Hello world';
    }
}
MyClass::helloWorld();

?

11.静态成员。

类的定义现在包含静态成员(属性),可以通过类自身来访问。通常用的最多的是单件(Singleton)模式:

?

class Singleton {
    static private $instance = NULL;
    private function __construct() {
    }
    static public function getInstance() {
        if (sell::$instance == NULL) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

?

?

12.抽象类。