1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP

作者:用户 来源:互联网 时间:2017-12-01 12:36:35

php对象图形计算器简单多态性细说高洛峰

PHP 对象  多态性 简单图形计算器 高洛峰 细说PHP - 摘要: 本文讲的是PHP 对象 多态性 简单图形计算器 高洛峰 细说PHP, 主程序页面 test.php页面<!DOCTYPEhtml><html><head><title>简单的图形计算器</title><metahttp-equiv="Cont


主程序页面 test.php页面

<!DOCTYPEhtml>
<html>
<head>
<title>简单的图形计算器</title>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
</head>
<body>
<center>
<h1>简单的图形计算器</h1>
<ahref="test.php?action=rectangle">矩形</a>&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;
<ahref="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
//形状抽象类
abstractclassShape{
public$name;
//面积
abstractfunctionarea();
//周长
abstractfunctioncircumference();
//图形界面
abstractfunctionview();
//形状验证方法
abstractfunctionvalidate($arr);

}

矩形类Rectangle.class.php页面

<?php
//矩形类
classRectangleextendsShape{
private$width;
private$height;
function__construct($arr=array()){
if(!empty($arr)){
$this->width=$arr['width'];
$this->height=$arr['height'];
}
$this->name='矩形';
}
functionarea(){
return$this->width*$this->height;
}
//周长
functioncircumference(){
return2*($this->width+$this->height);
}
//图形界面
functionview(){
$form='<formaction="test.php?action=rectangle"method="post">';
$form.=$this->name.'的宽:<inputtype="text"name="width"value="'.$_POST['width'].'"/><br/>';
$form.=$this->name.'的高:<inputtype="text"name="height"value="'.$_POST['height'].'"/><br/>';
$form.='<inputtype="submit"name="dosubmit"value="计算"/><br/>';
$form.='</form>';
echo$form;
}
//形状验证方法
functionvalidate($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
//三角形类
classTriangleextendsShape{
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='三角形';
}
functionarea(){
$p=($this->edge1+$this->edge2+$this->edge3)/2;
returnsqrt($p*($p-$this->edge1)*($p-$this->edge2)*($p-$this->edge3));
}
//周长
functioncircumference(){
return($this->edge1+$this->edge2+$this->edge3);
}
//图形界面
functionview(){
$form='<formaction="test.php?action=triangle"method="post">';
$form.=$this->name.'的第一个边:<inputtype="text"name="edge1"value="'.$_POST['edge1'].'"/><br/>';
$form.=$this->name.'的第二个边:<inputtype="text"name="edge2"value="'.$_POST['edge2'].'"/><br/>';
$form.=$this->name.'的第三个边:<inputtype="text"name="edge3"value="'.$_POST['edge3'].'"/><br/>';
$form.='<inputtype="submit"name="dosubmit"value="计算"/><br/>';
$form.='</form>';
echo$form;
}
//形状验证方法
functionvalidate($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 对象 多态性 简单图形计算器 高洛峰 细说PHP的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有其他相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 对象 , 图形 , 计算器 , 简单 , 多态性 , 细说 高洛峰 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备
Apache Spark Meetup China 第1期 最全资料下载