삼각형 계산
이전 섹션에서 언급한 여러 클래스 파일의 일회성 기록은 실제로 PHP에서 제공하는 매직 배포판 __autoload()를 사용하여 달성할 수 있습니다.
코드는 다음과 같습니다:
<?php function __autoload($classname) { //魔术方法 自动加载类 require "./$classname.class.php"; //将类名转化成小写 }
해당하는 한 이 메소드는 클래스가 인스턴스화될 때 자동으로 호출됩니다. 시스템의 내부 코드는 자동으로 클래스 파일의 이름을 찾아 $classname에 할당합니다. 인스턴스화되면 해당 이 메소드는 클래스가 설치될 때만 로드되므로 한 번에 많은 클래스 파일을 도입하지 않으며
삼각형 계산 방법
을 사용할 수 없습니다. Triangle.class.php 파일,
삼각형 세 변의 합이 세 번째 변보다 크고 문자이거나 0보다 작을 수 없다는 점에 유의해야 합니다. 면적과 둘레는 다음과 같습니다. 다른 구조는 기본적으로 직사각형과 유사합니다
구체적인 코드는 다음과 같습니다.
<?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 .= "请输入".$arr['name']."的第一条边:<input type='text' name='bian1' value='".$_POST['bian1']."'/><br>"; $form .= "<br>"; $form .= "请输入".$arr['name']."的第二条边:<input type='text' name='bian2' value='".$_POST['bian2']."'/><br>"; $form .= "<br>"; $form .= "请输入".$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 .= "第一条边不是数字;"; $bz = false; } } if ($arr['bian2']< 0) { $this->error .= "第二条边小0;"; $bz = false; } else { if (!is_numeric($arr['bian2'])) { $this->error .= "第二条边不是数字;"; $bz = false; } } if ($arr['bian2']< 0) { $this->error .= "第三条边小于0;"; $bz = false; } else { if (!is_numeric($arr['bian2'])) { $this->error .= "第三条边不是数字;"; $bz = false; } } if (($this->bian1+$this->bian2) < $this->bian3 ||($this->bian1+$this->bian3) < $this->bian2 ||($this->bian2+$this->bian3) < $this->bian1) { $this->error .= "三条边不能构成三角形"; $bz = false; } return $bz; } } ?>
실행 결과 표시: