好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PHP __destruct()构造函数和析构函数.pdf

3页
  • 卖家[上传人]:油条
  • 文档编号:12636052
  • 上传时间:2017-09-04
  • 文档格式:PDF
  • 文档大小:96.20KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • PHP __destruct()构造函数和析构函数构造函数void __construct ([ mixed $args [, $... ]] )PHP 5 允⾏开发者在⼀个类中定义⼀个⽅法作为构造函数具有构造函数的类会在每次创建新对象时先调⽤此⽅法,所以⾮常适合在使⽤对象之前做⼀些初始化⼯作Note: 如果⼦类中定义了构造函数则不会隐式调⽤其⽗类的构造函数要执⾏⽗类的构造函数,需要在⼦类的构造函数中调⽤parent::__construct()如果⼦类没有定义构造函数则会如同⼀个普通的类⽅法⼀样从⽗类继承(假如没有被定义为 private 的话)实例使⽤新标准的构造函数:instance = ++self::$instances;}public function __clone() {$this->instance = ++self::$instances;}}class MyCloneable{public $object1;public $object2;function __clone(){// 强制复制⼀份this->object, 否则仍然指向同⼀个对象$this->object1 = clone $this->object1;}}$obj = new MyCloneable();$obj->object1 = new SubObject();$obj->object2 = new SubObject();$obj2 = clone $obj;print("Original Object:\n");print_r($obj);print("Cloned Object:\n");print_r($obj2);?>运⾏实例 »为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数并且也没有从⽗类继承⼀个的话,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。

      因此唯⼀会产⽣兼容性问题的情况是:类中已有⼀个名为 __construct() 的⽅法却被⽤于其它⽤途时与其它⽅法不同,当 __construct() 被与⽗类 __construct() 具有不同参数的⽅法覆盖时,PHP 不会产⽣⼀个 E_STRICT 错误信息⾃ PHP 5.3.3 起,在命名空间中,与类名同名的⽅法不再作为构造函数这⼀改变不影响不在命名空间中的类析构函数void __destruct ( void )PHP 5 引⼊了析构函数的概念,这类似于其它⾯向对象的语⾔,如 C++析构函数会在到某个对象的所有引⽤都被删除或者当对象被显式销毁时执⾏实例析构函数⽰例:name = "MyDestructableClass";}function __destruct() {print "Destroying " . $this->name . "\n";}}$obj = new MyDestructableClass();?>运⾏实例 »和构造函数⼀样,⽗类的析构函数不会被引擎暗中调⽤要执⾏⽗类的析构函数,必须在⼦类的析构函数体中显式调⽤ parent::__destruct()。

      此外也和构造函数⼀样,⼦类如果⾃⼰没有定义析构函数则会继承⽗类的析构函数即使在使⽤ exit() 终⽌脚本运⾏时也会被调⽤在析构函数中调⽤ exit() 将会中⽌其余关闭操作的运⾏Note:析构函数在脚本关闭时调⽤,此时所有的 HTTP 头信息已经发出脚本关闭时的⼯作⽬录有可能和在 SAPI(如 apache)中时不同Note:试图在析构函数(在脚本终⽌时被调⽤)中抛出⼀个异常会导致致命错误W3Cschool()最⼤的技术知识分享与学习平台此篇内容来⾃于⽹站⽤户上传并发布。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.