PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP相关的知识,希望对你有一定的参考价值。
主程序页面 test.php页面
<!DOCTYPE html> <html> <head> <title>简单的图形计算器</title> <meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" /> </head> <body> <center> <h1>简单的图形计算器</h1> <a href = "test.php?action=rectangle">矩形</a> || <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‘])){ //第一步:创建形状的对象 $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; } }
浏览器 矩形页面
浏览器 三角形页面
本文出自 “津沙港湾” 博客,请务必保留此出处http://11410485.blog.51cto.com/11400485/1845249
以上是关于PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP的主要内容,如果未能解决你的问题,请参考以下文章
PHP SESSION 应用 邮件系统实例 高洛峰 细说PHP