矩形的計算

考慮到圖形有很多種,我們可以先建一個圖形抽象類別,提供所有圖形公共的屬性和方法,

這樣其他圖形可以直接繼承他,減少了程式碼的冗餘,符合物件導向的想法

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

使用構造函數使其進行實例化是自動給name和error賦值

分別進行面積和周長的計算

點擊矩形之後需要顯示輸入框,這時只需要定義給一個方法view()來打印出輸入框即可

為矩形按鈕加一個a標籤

<a href='index.php?action=rect'>矩形</a> |

#點擊之後進行get請求,並把view裡印出來的輸入框展示出來,程式碼如下:

<?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,驗證訊息的列印

矩形類別裡新加方法:

<?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>";

#運行結果:

gif5新文件 (29).gif

#思考:在index.php裡需要引進Rect.class.php檔案,

require 'Rect.class. php';

計算其他圖形時也需要引入,有沒有辦法可以一次引進所有的類別檔案?(下一節介紹)#######
繼續學習
||
<?php echo "矩形周长面积的计算";