多くの種類のグラフィックがあることを考慮して、最初にグラフィック抽象クラスを構築して、すべてのグラフィックに共通のプロパティとメソッドを提供します。
そうすることで、他のグラフィックでも使用できるようになります。それを直接継承し、コードの冗長性を減らし、オブジェクト指向の考え方に準拠します
1、新しい Shap.class.php ファイルを作成します
グラフィックの名前 $name、エラー メッセージ $error、周囲 area() およびエリア zhou()、および各計算後の検証 yan()
<?php abstract class Shape { private $name; private $error; abstract function area(); abstract function zhou(); abstract function view($arr); abstract function yan($arr); } ?>
2、新しい Rect.class.php ファイルを作成します
新しい四角形クラスを作成した後、グラフィックス クラスを継承し、対応するメソッドを実装します。継承されたプロパティとメソッドに加えて、各グラフィックスには独自の固有のプロパティとメソッドがあります。たとえば、長方形には長さと幅があり、球には半径などがあります。
長方形の $width と $ のプロパティを定義します。 height
コンストラクターを使用して自動的にインスタンス化します。名前とエラーに値を割り当てます。
面積と周囲長をそれぞれ計算します。
長方形をクリックした後、入力ボックス。現時点では、入力ボックスを出力するメソッド view() を定義するだけで済みます。
長方形のボタンに a タグを追加できます
<a href ='index.php?action=rect'>rectangle</a> |
クリック後、get リクエストを実行し、ビューに印刷された入力ボックスを表示します。コードは次のとおりです。
<?php if (!empty($_GET['action'])) { $shape = new Rect(); $shape->view(); }
<?php class Rect extends Shape { private $width; private $height; function __construct() { $this->name = "矩形"; $this->error = ''; } function area() { return $this->width * $this->height; } function zhou() { return ($this->width+$this->height) * 2; } function view($arr) { $form=''; $form .= "<form action='index.php?action=rect' method='post'>"; $form .= "请输入".$arr['name']."的宽度:<input type='text' name='width' value='".$_POST['width']."'/><br>"; $form .= "<br>"; $form .= "请输入".$arr['name']."的长度:<input type='text' name='height' value='".$_POST['height']."'/><br>"; $form .= "<br>"; $form .= "<input type='submit' name='sub' value='提交'/> "; $form .= "<input type='reset' name='ret' value='重置'/>"; $form .= "</form>"; echo $form; } } ?>
3、検証情報の出力
rectangle クラスに追加された新しいメソッド:
<?php function yan($arr) { $bz = true; if ($arr['width']< 0) { $this->error .= "宽度小于0;"; $bz = false; } else { if (!is_numeric($arr['width'])) { $this->error .= "宽不是数字;"; $bz = false; } } if ($arr['height']< 0) { $this->error .= "宽度小于0;"; $bz = false; } else { if (!is_numeric($arr['height'])) { $this->error .= "高不是数字;"; $bz = false; } } return $bz; }
検証情報を出力します。index.php コード:
if (!$shape->yan($_POST)) { echo "<b>错误:$shape->error</b>"; } echo "</div>";
検証情報が正しい場合は、正しい周囲長と領域を出力します:
<?php echo "<div id='footer'>"; if ($shape->yan($_POST)) { echo "<b>".$shape->name."的周长".$shape->zhou()."</b>"."<br>"; echo "<br>"; echo "<b>".$shape->name."的面积".$shape->area()."</b>"."<br>"; }else { echo "<b>错误:$shape->error</b>"; } echo "</div>";
実行結果:
考え方: Index.php に Rect.class.php ファイルを導入する必要があります。require 'Rect.class. php';
また、次のことも必要です。他のグラフィックスを計算するときにインポートされます。すべてのクラス ファイルを一度にインポートする方法はありますか? (次のセクションで説明します)
次のセクション