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();
為什麼要有兩個建構函式?是為了匹配不同的版本嗎?
應該是的,PHP4 是用的同名函數做建構函式,而 PHP5 用的是 __construct,具體請參考:
http://php.net/manual/zh/language.oop5.decon.php
http://php.net/manual/zh/oop4.constructor.php
應該不是吧,裡面的語句都不一樣,至於為啥這麼寫就不知道了
php4 沿襲 C++ 以類名的同名函數作為建構函式
php5 新增了 __construct 作為建構函式
由於你的類屬性定義是 php4 風格的,所以可認為這個類是在 php4 基礎上的擴充
並非向下相容,而是畫蛇添足
這個是為了相容
在php4中建構函式採用與類同名的方式進行定義
在php5中建構函式採用__construct定義
在php4中不識別__construct,不影響程式正常運行
在php5中,當二者同時存在時,__construct優先
關於php的一些知識可以看下視頻教程的,很多應該都有講到
v8視頻 有很多編程方面的視頻教程 v8視頻