刚刚学完php面向对象的编程,参考着高洛峰老师的php教程学习了这个实例。
效果图片:
以下是实现代码:
index.php
<html><head> <title>图形计算(使用面向对象开发技术)</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <center> <h1>图形(周长&面积) 计算器</h1> <a href="index.php?action=rect">矩形</a> <a href="index.php?action=triangle">三角形</a> <a href="index.php?action=circle">圆形</a> <hr> </center> <?php //php代码部分 error_reporting(E_ALL & ~E_NOTICE);//提示错误的等级 // __autoload是php中的魔术方法,在用到类的时候自动调用 function __autoload($className){ //自动导入这个类 include strtolower($className).".class.php"; } //输出表单,form类中有魔术方法__toString,因此可以直接输出类的对象引用,就是输出对象返回的字符串 echo new Form(); if(isset($_POST["sub"])){ //输出结果 echo new Result();//直接输出对象的引用表示 } ?></body></html>
form.class.php_这是表单类_
<?php //根据index中提交的不同action的值返回不同的表单 class Form{ private $action; private $shape; //构造方法 function __construct($action=""){ $this->action = $action; $this->shape=isset($_REQUEST["action"])?$_REQUEST["action"]:"rect"; } function __toString() { // TODO: Implement __toString() method. $form='<form action="'.$this->action.'" method="post">'; switch($this->shape){ case "rect": $form.=$this->getRect(); break; case "triangle": $form.=$this->getTriangle(); break; case "circle": $form.=$this->getCircle(); break; default: $form.='请选择一个形状<br>'; } $form.='<input type="submit" name="sub" value="计算">'; $form.='</form>'; return $form; } private function getRect(){ $input='<b>请输入 | 矩形 | 的宽度和高度:</b><p>'; $input.='宽度:<input type="text" name="width" value="'.$_POST['width'].'"><br>'; $input.='高度:<input type="text" name="height" value="'.$_POST['height'].'"><br>'; $input.='<input type="hidden" name="action" value="rect">'; return $input; } private function getTriangle(){ $input='<b>请输入 | 三角形 | 的三条边:</b><p>'; $input.='第一边: <input type="text" name="side1" value="'.$_POST['side1'].'" ><br>'; $input.='第二边: <input type="text" name="side2" value="'.$_POST['side2'].'" ><br>'; $input.='第三边: <input type="text" name="side3" value="'.$_POST['side3'].'" ><br>'; $input.='<input type="hidden" name="action" value="triangle">'; return $input; } private function getCircle(){ $input='<b>请输入 | 圆形 | 的半径:</b><p>'; $input.='半径: <input type="text" name="radius" value="'.$_POST['radius'].'" ><br>'; $input.='<input type="hidden" name="action" value="circle">'; return $input; } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 16:26 * */
shape.class.php 这是一个抽象类,用来定义规范的
<?phpabstract class Shape { public $shapeName; //规范circle、triangle、rect中必须有area()、perimeter()方法 abstract function area(); abstract function perimeter(); public function setShapeName($shapeName) { $this->shapeName = $shapeName; return $this; } //判断输入的数字是否为大于0的有效数字 protected function validate($value, $message="形状"){ if($value == "" || !is_numeric($value) || $value < 0 ){ echo '<font color="red"> '.$message.' 必须为非负值的数字,并且不能为空 </font><br>'; return false; } else { return true; } } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 16:42 */
circle.class.php_就是计算周长和面积的公式了_
<?phpclass Circle extends Shape { private $radius=0; function __construct(){ $this->shapeName="圆形"; if($this->validate($_POST['radius'], '圆的半径')){ $this->radius=$_POST["radius"]; }else{ exit; } } function area(){ return pi()*$this->radius*$this->radius; } function perimeter(){ return 2*pi()*$this->radius; } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 17:06 */
rect.class.php
<?phpclass Rect extends Shape{ private $width=0; private $height=0; function __construct() { $this->shapeName="矩形"; if($this->validate($_POST["width"],'矩形的宽度') & $this->validate($_POST["height"],'矩形的高度')) { $this->width=$_POST["width"]; $this->height=$_POST["height"]; } else{ exit; } } function area(){ return $this->width*$this->height; } function perimeter() { return 2 * ($this->width + $this->height); } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 17:02 */
triangle.class.php
<?phpclass Triangle extends Shape{ private $side1=0; private $side2=0; private $side3=0; function __construct(){ $this->shapeName="三角形"; if($this->validate($_POST['side1'], '三角形的第一个边')){ $this->side1=$_POST["side1"]; } if($this->validate($_POST['side2'], '三角形的第二个边')){ $this->side2=$_POST["side2"]; } if($this->validate($_POST['side3'], '三角形的第三个边')){ $this->side3=$_POST["side3"]; } if(!$this->validateSum()){ echo '<font color="red">三角形的两边之和必须大于第三边</font>'; exit; } } function area(){ $s=( $this->side1+$this->side2+$this->side3 )/2; return sqrt( $s * ($s - $this->side1) * ($s - $this->side2) * ($s - $this->side3) ); } function perimeter(){ return $this->side1+$this->side2+$this->side3; } private function validateSum() { $condition1 = ($this->side1 + $this->side2) > $this->side3; $condition2 = ($this->side1 + $this->side3) > $this->side2; $condition3 = ($this->side2 + $this->side3) > $this->side1; if ($condition1 && $condition2 && $condition3) { return true; } else { return false; } } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 17:04 */
result.class.php_这里是返回计算结果类_
<?php class Result{ private $shape; function __construct() { switch($_POST['action']){ case 'rect': $this->shape=new Rect(); break; case 'triangle': $this->shape=new Triangle(); break; case 'circle': $this->shape=new Circle(); break; default: $this->shape=false; } } /** * @return string */ function __toString() { // TODO: Implement __toString() method. if($this->shape){ $result=$this->shape->shapeName.'的周长:'.$this->shape->perimeter().'<br>'; $result.=$this->shape->shapeName.'的面积:'.$this->shape->area().'<br>'; return $result; }else{ return '没有这个形状'; } } }/** * Created by PhpStorm. * User: user * Date: 2018/4/15 * Time: 16:47 */
相关推荐:
以上是php面向对象编程练习:计算矩形、三角形、圆形的周长和面积 的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用

Dreamweaver Mac版
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器