三角形的計(jì)算
上一節(jié)提到的一次性記載多個(gè)類文件其實(shí)可以使用php提供的魔術(shù)發(fā)放_(tái)_autoload()來實(shí)現(xiàn)
代碼如下:
<?php function __autoload($classname) { //魔術(shù)方法 自動(dòng)加載類 require "./$classname.class.php"; //將類名轉(zhuǎn)化成小寫 }
只要對(duì)應(yīng)的類被實(shí)例化時(shí)就會(huì)自動(dòng)調(diào)用這個(gè)方法,系統(tǒng)內(nèi)部代碼會(huì)自動(dòng)去尋找到類文件的名稱,賦值給$classname,
這樣做的好處是能夠做到延遲加載,當(dāng)實(shí)例化對(duì)應(yīng)的類時(shí)才會(huì)加載這個(gè)方法,避免了一次性引入很多類文件,還可能用不到
三角形的計(jì)算方式
新建Triangle.class.php文件,
三角形需要注意三條邊必須滿足兩邊之和大于第三邊,不能為字母或小于0,面積和周長(zhǎng)的計(jì)算方式不一樣,其他的構(gòu)造基本和矩形類似
具體代碼如下:
<?php class Triangle extends Shape { private $bian1; private $bian2; private $bian3; function __construct($arr = array()) { if (!empty($arr)) { $this->bian1 = $arr['bian1']; $this->bian2 = $arr['bian2']; $this->bian3 = $arr['bian3']; } $this->name = "三角形"; $this->error = ''; } function area() { $p = ($this->bian1 + $this->bian2 + $this->bian3) / 2; // p(p-a)(p-b)(p-c) return sqrt($p*($p-$this->bian1)*($p-$this->bian2)*($p-$this->bian3)); } function zhou() { return $this->bian1+$this->bian2+$this->bian3; } function view($arr) { $form=''; $form .= "<form action='index.php?action=triangle' method='post'>"; $form .= "請(qǐng)輸入".$arr['name']."的第一條邊:<input type='text' name='bian1' value='".$_POST['bian1']."'/><br>"; $form .= "<br>"; $form .= "請(qǐng)輸入".$arr['name']."的第二條邊:<input type='text' name='bian2' value='".$_POST['bian2']."'/><br>"; $form .= "<br>"; $form .= "請(qǐng)輸入".$arr['name']."的第三條邊:<input type='text' name='bian3' value='".$_POST['bian3']."'/><br>"; $form .= "<br>"; $form .= "<input type='submit' name='sub' value='提交'/> "; $form .= "<input type='reset' name='ret' value='重置'/>"; $form .= "</form>"; echo $form; } function yan($arr) { $bz = true; if ($arr['bian1']< 0) { $this->error .= "第一條邊小于0;"; $bz = false; } else { if (!is_numeric($arr['bian1'])) { $this->error .= "第一條邊不是數(shù)字;"; $bz = false; } } if ($arr['bian2']< 0) { $this->error .= "第二條邊小0;"; $bz = false; } else { if (!is_numeric($arr['bian2'])) { $this->error .= "第二條邊不是數(shù)字;"; $bz = false; } } if ($arr['bian2']< 0) { $this->error .= "第三條邊小于0;"; $bz = false; } else { if (!is_numeric($arr['bian2'])) { $this->error .= "第三條邊不是數(shù)字;"; $bz = false; } } if (($this->bian1+$this->bian2) < $this->bian3 ||($this->bian1+$this->bian3) < $this->bian2 ||($this->bian2+$this->bian3) < $this->bian1) { $this->error .= "三條邊不能構(gòu)成三角形"; $bz = false; } return $bz; } } ?>
運(yùn)行結(jié)果展示: