跳转到主内容
极星编程网:以代码为星,赴技术山海!

php的类里可以有两个构造函数?

class ecs_error { var $_message = array(); var $_template = ''; var $error_no = 0; /** * 构造函数 * * @access public * @param string $tpl * @return void */ function __construct($tpl) { $this->ecs_error($tpl); } /** * 构造函数 * * @access public * @param string $tpl * @return void */ function ecs_error($tpl) { $this->_template = $tpl; }
已经有了一个__construct(), 还有一个跟类名同名的构造函数ecs_error(); 为什么要有两个构造函数?是为了匹配不同的版本吗? 回复内容:
class ecs_error { var $_message = array(); var $_template = ''; var $error_no = 0; /** * 构造函数 * * @access public * @param string $tpl * @return void */ function __construct($tpl) { $this->ecs_error($tpl); } /** * 构造函数 * * @access public * @param string $tpl * @return void */ function ecs_error($tpl) { $this->_template = $tpl; }
已经有了一个__construct(), 还有一个跟类名同名的构造函数ecs_error(); 为什么要有两个构造函数?是为了匹配不同的版本吗? 应该是的, php 4 是用的同名函数做构造函数,而 php5 用的是
__construct
,具体请参考: http://php.net/manual/zh/language.oop5.decon.php http://php.net/manual/zh/oop4.constructor.php 应该不是吧,里面的语句都不一样,至于为啥这么写就不知道了 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 php4 沿袭 C++ 以类名的同名函数作为构造函数 php5 新增了 __construct 作为构造函数 由于你的类属性定义是 php4 风格的,所以可认为这个类是在 php4 基础上的扩展 并非向下兼容,而是画蛇添足 这个是为了兼容 在php4中构造函数采用与类同名的方式进行定义 在php5中构造函数采用__construct定义 在php4中不识别__construct,不影响程序正常运行 在php5中,当二者同时存在时,__construct优先 关于php的一些知识可以看下视频教程的,很多应该都有讲到 v8视频 有很多编程方面的视频教程 v8视频

相关文章