PHP 5 权威编程(PHP 5 Power Programming) PDF下载地址 http://www.jb51.net/books/28207.html
PHP4中,不使用__construct()作为构造函数的名字,必须使用类的名字定义一个方法,就像在C++中一样。 PHP5中,使用新的统一的构造函数命名方式:__construct(),当然,使用类名同样也是可以的。 但是,你如果两个同时使用的话,系统默认会使用__construct()的形式。 复制代码 代码如下: <?php class Person{ //PHP4中的方法 public function Person(){ echo "PHP4中的方法"; } //PHP5推荐使用的方法 public function __construct(){ echo "PHP5推荐使用的方法"; } public function say(){ } } $p1=new Person(); ?>
在构造函数中不能返回值,所以从构造函数内产生一个错误最常用的做法就是抛出一个异常。 代码如下: 复制代码 代码如下: <?php class Person{ private $_age; public function __construct($age){ try { if ($age<120){ $this->_age=$age; }else { throw new Exception("您输入的年龄过大"); } }catch (Exception $e){ echo $e->getMessage(); } } } $p1=new Person(121); ?>
parent::和self:: self::指向当前类,而且通常用来访问静态成员,方法和常量 parent::指向父类,而且它经常被用来调用父类的构造函数和方法,也可以用来访问父类的成员和常量 注意:你应该使用parent::而不是父类的某个具体的名字,因为这样可以令你方便的更改你的类的层次。 例子: 复制代码 代码如下: <?php class Father{ public function __construct(){ echo "调用父类的构造函数<br>"; } } class Son extends Father { public function __construct(){ parent::__construct();//方式一 // Father::__construct();//方式二 echo "调用子类的构造函数"; } } $son=new Son(); ?>
结果: 调用父类的构造函数 调用子类的构造函数 推荐使用方式一,原因上面已经说了。 instanceof实例 复制代码 代码如下: <?php class Rectangle { public $name=__CLASS__; } class Square extends Rectangle { public $name=__CLASS__; } class Circle{ public $name=__CLASS__; } function checkIfRectangle($shape){ if ($shape instanceof Rectangle ){ echo $shape->name; }else { echo "该对象不是Rectangle类的实例"; } } checkIfRectangle(new Square());//输出:Square checkIfRectangle(new Circle());//输出:该对象不是Rectangle类的实例 ?>