溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 對象 多態(tài)性 簡單圖形計算器 高洛峰 細說PHP

發(fā)布時間:2020-07-21 20:21:43 來源:網絡 閱讀:551 作者:津沙港灣 欄目:web開發(fā)

主程序頁面 test.php頁面

<!DOCTYPE html>
<html>
<head>
    <title>簡單的圖形計算器</title>
    <meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" />
</head>
<body>
    <center>
    <h2>簡單的圖形計算器</h2>
    <a href = "test.php?action=rectangle">矩形</a>&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;
    <a href = "test.php?action=triangle">三角形</a>
    </center>
    <br/><hr>
    <?php
    //屏蔽E_NOTICE提示
    error_reporting(E_ALL & ~E_NOTICE);
    //設置自動加載這個程序需要的類文件
    function __autoload($classname){
        include $classname.'.class.php';
    }
    //判斷用戶是否單擊一個形狀鏈接
    if(!empty($_GET['action'])){
        //第一步:創(chuàng)建形狀的對象
        $classname = ucfirst($_GET['action']);
        $shape = new $classname($_POST);
        //第二步:調用形狀的對象中的圖形界面
        $shape->view();
        //第三步:用戶是否提交了對應的圖形界面的表單
        if(isset($_POST['dosubmit'])){
            //第四步:查看用戶輸入的數據是否合法,不合法則提示
            if($shape->validate($_POST)){
            //第五步:計算圖形的面積和周長
            echo $shape->name.'的面積為:'.$shape->area().'<br/>';
            echo $shape->name.'的周長為:'.$shape->circumference().'<br/>';
            }
        }        
    }else{//如果用戶沒有單擊則默認訪問主程序
        echo '請選擇一個要計算的圖形';
    }
    ?>
</body>
</html>

形狀抽象類Shape.class.php頁面

<?php 
 //形狀抽象類
abstract class Shape{
        public  $name;
        //面積
        abstract function area();
        //周長
        abstract function circumference();
        //圖形界面
        abstract function view();
        //形狀驗證方法
        abstract function validate($arr);
        
}

矩形類Rectangle.class.php頁面

<?php 
//矩形類
class Rectangle extends Shape{
    private $width;
    private $height;
    function __construct($arr=array()){
        if(!empty($arr)){
        $this->width   =  $arr['width'];
        $this->height  =  $arr['height'];
        }
        $this->name   =  '矩形';
    }
     function area(){
        return $this->width*$this->height;
    }
    //周長
    function circumference(){
        return 2*($this->width+$this->height);
    }
    //圖形界面
  function view(){
        $form =  '<form action="test.php?action=rectangle" method="post">';
        $form .= $this->name.'的寬:<input type="text" name="width" value="'.$_POST['width'].'" /> <br/>'; 
        $form .= $this->name.'的高:<input type="text" name="height" value="'.$_POST['height'].'" /> <br/>'; 
        $form .= '<input type="submit" name="dosubmit" value="計算" /> <br/>'; 
        $form .= '</form>';
        echo $form;
    }
    //形狀驗證方法
     function validate($arr){
        $flag = true;
        if($arr['width']<0 || !is_numeric($arr['width'])){
            echo $this->name.'的寬必須是大于0的整數<br/>';
            $flag = false;
        }
        if($arr['height']<0 || !is_numeric($arr['height'])){
            echo $this->name.'的高必須是大于0的整數<br/>';
            $flag = false;
        }
        return $flag;
    }
    
}

三角形類Triangle.class.php頁面

<?php 
//三角形類
class Triangle extends Shape{
    private $edge1;
    private $edge2;
    private $edge3;

    function __construct($arr=array()){
        if(!empty($arr)){
        $this->edge1   =  $arr['edge1'];
        $this->edge2   =  $arr['edge2'];
        $this->edge3   =  $arr['edge3'];        
        }
        $this->name   =  '三角形';
    }
     function area(){
         $p =($this->edge1+$this->edge2+$this->edge3)/2;         
        return sqrt($p*($p-$this->edge1)*($p-$this->edge2)*($p-$this->edge3));
    }
    //周長
    function circumference(){
        return ($this->edge1+$this->edge2+$this->edge3);
    }
    //圖形界面
  function view(){
        $form =  '<form action="test.php?action=triangle" method="post">';
        $form .= $this->name.'的第一個邊:<input type="text" name="edge1" value="'.$_POST['edge1'].'" /> <br/>'; 
        $form .= $this->name.'的第二個邊:<input type="text" name="edge2" value="'.$_POST['edge2'].'" /> <br/>'; 
        $form .= $this->name.'的第三個邊:<input type="text" name="edge3" value="'.$_POST['edge3'].'" /> <br/>'; 
        $form .= '<input type="submit" name="dosubmit" value="計算" /> <br/>'; 
        $form .= '</form>';
        echo $form;
    }
    //形狀驗證方法
     function validate($arr){
        $flag = true;
        if($arr['edge1']<0 || !is_numeric($arr['edge1'])){
            echo $this->name.'的第一邊必須是大于0的整數<br/>';
            $flag = false;
        }
        if($arr['edge2']<0 || !is_numeric($arr['edge2'])){
            echo $this->name.'的第二邊必須是大于0的整數<br/>';
            $flag = false;
        }
        if($arr['edge3']<0 || !is_numeric($arr['edge3'])){
            echo $this->name.'的第三邊必須是大于0的整數<br/>';
            $flag = false;
        }
        if(($arr['edge1']+$arr['edge2']<$arr['edge3']) || ($arr['edge1']+$arr['edge3']<$arr['edge2'])||($arr['edge3']+$arr['edge2']<$arr['edge1']) ){
            echo '三角形定義必須兩邊之和大于第三邊<br/>';
            $flag = false;
        }
        return $flag;
    }
    
}

瀏覽器 矩形頁面

PHP 對象  多態(tài)性 簡單圖形計算器 高洛峰 細說PHP

瀏覽器 三角形頁面

PHP 對象  多態(tài)性 簡單圖形計算器 高洛峰 細說PHP

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI