


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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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_1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
This is an abstract class used to define specifications 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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_1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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.php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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.php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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_1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
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

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,

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

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

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.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.
