<?php class person { var $name; var $sex; var $age; function _construct($name,$sex,$age) { $this->name=$name; $this->sex=$sex; $this->age=$age; } function say() { echo "My name is".$this->name; echo ",sex:".$this->sex; echo ",age:".$this->age."<p>"; } } $p1=new person("XX","man",21); $p2=new person("NN","woman",21); $p1->say(); $p2->say();?>
上面的代码显示出这样的内容
哪里出错了 !!
æé æ¹æ³æ¯ç±»ä¸çä¸ä¸ªç¹æ®æ¹æ³ãå½ä½¿ç¨ new æä½ç¬¦å建ä¸ä¸ªç±»çå®ä¾æ¶ï¼æé æ¹æ³å°ä¼èªå¨è°ç¨ï¼å
¶å称å¿
é¡»æ¯ __construct() ãæ以é常ç¨å®æ§è¡ä¸äºæç¨çåå§åä»»å¡ã该æ¹æ³æ è¿åå¼ã
å¦æåç±»ä¸å®ä¹äºæé å½æ°åä¸ä¼æä¸è°ç¨å ¶ç¶ç±»çæé å½æ°ãè¦æ§è¡ç¶ç±»çæé å½æ°ï¼éè¦å¨åç±»çæé å½æ°ä¸è°ç¨ parent::__construct()ã
ä¸æé æ¹æ³å¯¹åºçå°±æ¯æææ¹æ³ï¼æææ¹æ³ä¼å¨æ个对象çææå¼ç¨é½è¢«å é¤æè å½å¯¹è±¡è¢«æ¾å¼éæ¯ä¹åæ§è¡çä¸äºæä½æè åè½ãææå½æ°ä¸è½å¸¦æä»»ä½åæ°ï¼å ¶åç§°å¿ é¡»æ¯ __destruct() ã
åæ ·ï¼å¦æåç±»ä¸å®ä¹äºææå½æ°åä¸ä¼æä¸è°ç¨å ¶ç¶ç±»çææå½æ°ãè¦æ§è¡ç¶ç±»çææå½æ°ï¼éè¦å¨åç±»çææå½æ°ä¸è°ç¨ parent::__destruct()ã
注æï¼å¨ææå½æ°ä¸æåºä¸ä¸ªå¼å¸¸ä¼å¯¼è´è´å½é误ã
<?php
class Construct{
protected $a;
protected $b;
function __construct($a,$b){ //å®ä¹æé å½æ°
$this->a=$a;
$this->b=$b;
}
function __destruct(){ //éæ°å®ä¹ä¸ºåå§å¼
$result=0;
echo 'æ¢å¤ä¹ç§¯çåå§å¼ï¼'.$result;
}
}
class son extends construct{
private $c;
function __construct($c){
parent::__construct(6,10); //è°ç¨ç¶ç±»çæé æ¹æ³,使ç¨æ¹æ³ï¼parent::__construct(); æåæ°å åæ°
$this->c=$c;
}
function show(){
$result=$this->a*$this->b*$this->c;
print 'abcçä¹ç§¯æ¯ï¼'.$result.' ';
}
function __destruct(){
parent::__destruct(); //è°ç¨ç¶ç±»çææå½æ°ï¼ä½¿ç¨æ¹å¼ï¼parent::__destruct();
}
}
$test=new son(12); //å®ä¾å对象
$test->show(); //abcçä¹ç§¯æ¯ï¼720 æ¢å¤ä¹ç§¯çåå§å¼ï¼0
?>
å¦æåç±»ä¸å®ä¹äºæé å½æ°åä¸ä¼æä¸è°ç¨å ¶ç¶ç±»çæé å½æ°ãè¦æ§è¡ç¶ç±»çæé å½æ°ï¼éè¦å¨åç±»çæé å½æ°ä¸è°ç¨ parent::__construct()ã
ä¸æé æ¹æ³å¯¹åºçå°±æ¯æææ¹æ³ï¼æææ¹æ³ä¼å¨æ个对象çææå¼ç¨é½è¢«å é¤æè å½å¯¹è±¡è¢«æ¾å¼éæ¯ä¹åæ§è¡çä¸äºæä½æè åè½ãææå½æ°ä¸è½å¸¦æä»»ä½åæ°ï¼å ¶åç§°å¿ é¡»æ¯ __destruct() ã
åæ ·ï¼å¦æåç±»ä¸å®ä¹äºææå½æ°åä¸ä¼æä¸è°ç¨å ¶ç¶ç±»çææå½æ°ãè¦æ§è¡ç¶ç±»çææå½æ°ï¼éè¦å¨åç±»çææå½æ°ä¸è°ç¨ parent::__destruct()ã
注æï¼å¨ææå½æ°ä¸æåºä¸ä¸ªå¼å¸¸ä¼å¯¼è´è´å½é误ã
<?php
class Construct{
protected $a;
protected $b;
function __construct($a,$b){ //å®ä¹æé å½æ°
$this->a=$a;
$this->b=$b;
}
function __destruct(){ //éæ°å®ä¹ä¸ºåå§å¼
$result=0;
echo 'æ¢å¤ä¹ç§¯çåå§å¼ï¼'.$result;
}
}
class son extends construct{
private $c;
function __construct($c){
parent::__construct(6,10); //è°ç¨ç¶ç±»çæé æ¹æ³,使ç¨æ¹æ³ï¼parent::__construct(); æåæ°å åæ°
$this->c=$c;
}
function show(){
$result=$this->a*$this->b*$this->c;
print 'abcçä¹ç§¯æ¯ï¼'.$result.' ';
}
function __destruct(){
parent::__destruct(); //è°ç¨ç¶ç±»çææå½æ°ï¼ä½¿ç¨æ¹å¼ï¼parent::__destruct();
}
}
$test=new son(12); //å®ä¾å对象
$test->show(); //abcçä¹ç§¯æ¯ï¼720 æ¢å¤ä¹ç§¯çåå§å¼ï¼0
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-10-22
构造函数前面是两条下划线
第2个回答 2013-10-22
construct前面是双下划线
第3个回答 推荐于2018-02-27
__construct 魔术方法是两个下划线.本回答被提问者采纳