


PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles
I just finished learning PHP object-oriented programming and learned this example with reference to teacher Gao Luofeng's PHP tutorial.
Effect picture:
<html><head>
<title>图形计算(使用面向对象开发技术)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>
<center>
<h1 id="图形-周长-面积-nbsp-计算器">图形(周长&面积) 计算器</h1>
<a href="index.php?action=rect">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</a>
<a href="index.php?action=triangle">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</a>
<a href="index.php?action=circle">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</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>
Copy after login
form.class.php_This is the form class_<html><head> <title>图形计算(使用面向对象开发技术)</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <center> <h1 id="图形-周长-面积-nbsp-计算器">图形(周长&面积) 计算器</h1> <a href="index.php?action=rect">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</a> <a href="index.php?action=triangle">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</a> <a href="index.php?action=circle">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles</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>
<?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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的宽度和高度:</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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的三条边:</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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的半径:</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
*
*/
Copy after login
shape.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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的宽度和高度:</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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的三条边:</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>请输入 | PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles | 的半径:</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 * */
This is an abstract class used to define specifications <?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
*/
Copy after login
circle.class.php_It is the formula for calculating perimeter and area_<?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 */
<?phpclass Circle extends Shape {
private $radius=0; function __construct(){
$this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; 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
*/
Copy after login
rect.class.php<?phpclass Circle extends Shape { private $radius=0; function __construct(){ $this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; 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 */
<?phpclass Rect extends Shape{
private $width=0; private $height=0; function __construct()
{
$this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; if($this->validate($_POST["width"],'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的宽度') & $this->validate($_POST["height"],'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的高度'))
{ $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
*/
Copy after login
triangle.class.php<?phpclass Rect extends Shape{ private $width=0; private $height=0; function __construct() { $this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; if($this->validate($_POST["width"],'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的宽度') & $this->validate($_POST["height"],'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的高度')) { $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 */
<?phpclass Triangle extends Shape{
private $side1=0; private $side2=0; private $side3=0; function __construct(){
$this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; if($this->validate($_POST['side1'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第一个边')){ $this->side1=$_POST["side1"];
} if($this->validate($_POST['side2'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第二个边')){ $this->side2=$_POST["side2"];
} if($this->validate($_POST['side3'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第三个边')){ $this->side3=$_POST["side3"];
} if(!$this->validateSum()){ echo '<font color="red">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的两边之和必须大于第三边</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
*/
Copy after login
result.class.php_Here is the return calculation result class_<?phpclass Triangle extends Shape{ private $side1=0; private $side2=0; private $side3=0; function __construct(){ $this->shapeName="PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles"; if($this->validate($_POST['side1'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第一个边')){ $this->side1=$_POST["side1"]; } if($this->validate($_POST['side2'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第二个边')){ $this->side2=$_POST["side2"]; } if($this->validate($_POST['side3'], 'PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的第三个边')){ $this->side3=$_POST["side3"]; } if(!$this->validateSum()){ echo '<font color="red">PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles的两边之和必须大于第三边</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 */
<?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
*/
Copy after login
Related recommendations:
<?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 object-oriented static delayed binding static::
The above is the detailed content of PHP object-oriented programming exercises: Calculate the perimeter and area of rectangles, triangles, and circles. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
