ホームページ バックエンド開発 PHPチュートリアル 本に従ってグラフの面積を計算するプログラムを書いたのですが、どこで間違ったのか聞いてもいいですか?

本に従ってグラフの面積を計算するプログラムを書いたのですが、どこで間違ったのか聞いてもいいですか?

Jun 23, 2016 pm 02:03 PM

「PHPを考える」第8章の最後の例。フォームは作成できますが、「計算」をクリックするとエラーが発生します。アドバイスをお願いします
インターフェース: class__Shape.php
インターフェース Shape{
function area(); }
?>
Rectangle: class__Rect.php
クラス Rect の実装 Shape{
private $width;

function __construct($size=""){
$this-> =$size["長さ"];
}
関数 area(){
return $this->length * $this->width;
}
function perimeter(){
return 2 * ($this-> ;width + $this->length);
}
}
Triangle: class__Triangle.php
クラス Triangle 実装 Shape{
private $length2; ;

関数 __construct($size=""){
$this->length1 = $size["length1"];
$this->length2 = $size["length2"]; ;length3 = $size["length3"];
関数 area(){
$s = ($this->length1 + $this->length2 + $this->length3)/2; sqrt($s * ($s - $this->length1) * ($s - $this->length2) * ($s - $this->length3));
}
関数 perimeter() {
return $this->length1 + $this->length2 + $this->length3;
}
}
?>
Circle: class__Circle.php
class Circle 実装 Shape{
private $radius;

function __construce($size=""){
$this->radius = $size["radius"]
}
function area(){
return pi(); radius * $this->radius;
}
function perimeter(){
return 2* pi() * $this->radius;
}
}
フォーム: class__Form.php
< ;? php
クラス フォーム{
プライベート $リクエスト;
プライベート $メソッド;
関数 __construct($formName,$request,$action=", $method="get",$target="_self"){
$this->formName=$formName;
$this->action=$action; this->method=$method;
$this->target=$target;
関数 __toString(){
$str="

"; str.=""; $str.=" $str.="< ;";
ブレーク;
ケース 2:
$str.="
";
$str.=" th>三角形の辺の長さ 2:

";
$str.="";
休憩;
ケース 3:
$str.="";
休憩;
}
$str.="";
$str.="";
$str.="";
$str.="

".$this->formName."

"; $str.="
target";

switch ($this->request["action"]){
case 1:
$str .="
長方形の長さ:"; $str.="
長方形の幅:
三角形の辺の長さ 1: ";
$str.="< 入力タイプ=text name='length1' value=".$this->request["length1"].">
";
$str.="
三角形边长3:";
$str.="
圆形半径:";
$str.="
";

$str; を返す
}
}
?>
制御程序:index.php


図形計算器


function __autoload($className){
include ('class__'.ucfirst($className).'.php');
}
?>

図形周長および面积コンパイラー



四角形||
三角形||
圆形


switch ($_REQUEST["action"]){
case 1:
$form=new Form("四角形",$_REQUEST,"index.php");
echo $form;
休憩;
ケース 2:
$form=new Form("三角形",$_REQUEST,"index.php");
echo $form;
休憩;
ケース3:
$form=new Form("圆形",$_REQUEST,"index.php");
echo $form;
休憩;
デフォルト:
echo "请选择一个図形
";
}

if(isset($_REQUEST["act"])){
switch($_REQUEST["act"]){
case 1:
$shape=new Rect($_REQUEST);
休憩;
ケース 2:
$shape=new Triangle($_REQUEST);
休憩;
ケース 3:
$shape=new Circle($_REQUEST);
休憩;
}
echo "面积範囲:".$shape->area()."
";
echo "周长:".$shape->perimeter()."
";
}
?>



回复讨论(解决方案)

没人看?都还没睡眠吗?

class__Form.php 中

$str.="

ターゲット";

$str.="target";
少抄了空格

class__Circle.php 中
function __construce($size=""){
应です
function __construct($size=""){
抄错了一个字符

$str.="<form action=".$this->action."method=".$this->method."target=$this->target";
ログイン後にコピー


この文には問題があります。アクションはindex.php、メソッドはパラメータですが、インデックスに直接接続されています。 。 。
index.phpmethod=
これに変更します:
index.php?method=
function __construct($formName,$request,$action="index.php",$method="get",$target="_self") {
$this->formName=$formName;
$this->request=$action.'?';
$this->method=$method; $this->target=$target;
}

さらに、パラメータが渡されていないため、サークルに問題があるようです。
純粋に肉眼で見て、勝手に推測して、ご質問があればお知らせください~

実際に誰かが最初に回答しましたが、私はまだ見ていません。 。 。恥ずかしい

class__Form.php 内

$str.="<form action=".$this->action."method=".$this->method."target=$this->target";

$str.="ta...

私修正後、円と三角形は出力できるのですが、「四角形」は出力できないのですか?テストしたところ、「rectangle」に問題はありませんでした。問題は、
フォームは正常に作成できましたが、「計算」をクリックしても何も起こりませんでした。また、
$str.="";
$str.="";
これら 2 つは何に使用されますか?

Windows でテストしていない場合は、ファイル名の大文字と小文字に注意する必要があります

class__Rect.php は使用できませんclass__rect.php またはその他の

action はフォーム読み込みの制御に使用されます
act はクラス読み込みの制御に使用されます


Windows でテストしていない場合は、ファイル名の大文字と小文字に注意する必要があります

class__Rect.php class__rect.php などは使用できません

アクションはフォームの読み込みを制御するために使用されます
act はクラスの読み込みを制御するために使用されます
Windows なので、大文字と小文字が区別されます
問題はありません。私のテストでは、何が問題なのかをどうやって教えてもらえますか? class__rect.php などは使用できません

action はフォームの読み込みを制御するために使用されます

act はクラスの読み込みを制御するために使用されます

Windows なので、大文字と小文字も区別されます あなたのコンピュータでテストしても大丈夫ですか?
四角形を含むコードを実行することもできます

もう一度書いたのですが、今度はまた三角形が出力されませんでした。混乱しています、何が問題ですか?
class__form.php:
//フォーム クラス、さまざまな選択に従ってさまざまなテーブルを作成します。オプションは長方形、円、三角形です。
class Form{
//フォームのメンバー属性を宣言します
private $formName;//フォームの名前
private $request;//フォームによって提供される変数と配列型
private $action;//ページデータの送信先
private $method;//送信メソッド
private $target;//新しいページを開く方法、デフォルトは _self です

function __construct($formName,$request,$action="index .php",$method="get ",$target="_self"){
$this->formName=$formName;
$this->request=$request;
$this->action=$アクション;
$this->method =$method;
$this->target=$target;
関数 __toString(){
$str="

< ;/tr>";
ブレーク;
ケース 2:
$str.="< th>三角形の 3 番目の辺の長さ: < ;td>";
$str.="";
$str.="";
ケース 3:
$str.=" ブレーク;
}
$str.="< /tr>";
$str.="";
$str.="< ;input type=hidden name='action' value=".$this->request["action"].">"; str.="

計算 ".$this->formName."

";
$str.=""

switch($this->request["action"]) {
ケース 1:
$str.="
長方形の長さ: ";
$str.="";
$str.="
長方形の幅: < /th>";
$str.="";
$str .="
三角形の最初の辺の長さ: ";
$str.= "";
$str.= "
三角形の 2 番目の辺の長さ: "; $str.="<入力タイプ=text name='length2' value=".$this-> ;request["length2"].">";
$str.="
円の半径: ";
$str .=" ";
$str.="
";

return $str; }
}

function __autoload($className){ //クラスがインクルードされると、このページに自動的にロードされます
include ("class__".ucfirst($className).".php" );//対応するクラスが存在するファイルを自動的にロードします
}
? >
長方形|| 三角形< /a>||
圆形


switch($_REQUEST["action"]){
case 1:
$form=new Form("矩形",$_REQUEST,"index.php");
echo $form;
break;
case 2:
$form=new Form("三角形",$_REQUEST,"index.php");
echo $form;
break;
case 3:
$form=new Form("圆形",$_REQUEST,"index.php");
echo $form;
break;
}

if(isset($_REQUEST["act"])){
switch ($_REQUEST["act"]){
case 1:
$shape=new Rect($_REQUEST);
break;
case 2:
$shape=new Triangle($_REQUEST);
break;
case 3:
$shape=new Circle($_REQUEST);
break;
}
echo "面积:".$shape->area()."
";
echo "周长:".$shape->perimeter()."
";
}
?>


其他的代码没有变,到底问题出在哪啊??

class__Form.php

<?phpclass Form{private $formName;private $request;private $action;private $method;private $target;function __construct($formName,$request,$action="index.php",$method="get",$target="_self"){$this->formName=$formName;$this->request=$request;$this->action=$action;$this->method=$method;$this->target=$target;}function __toString(){$str="<table align=center border=5 width=800>";$str.="<caption><h2>".$this->formName."</h2><caption>";$str.="<form action='$this->action' method='$this->method' target=$this->target";switch ($this->request["action"]){case 1:$str.="<tr><th>矩形长度:</th><td>";$str.="<input type='text' name='length' value=".$this->request["length"]."></td></tr>";$str.="<tr><th>矩形宽度:</th><td>";$str.="<input type='text' name='width' value=".$this->request["width"]."></td></tr>";break;case 2:$str.="<tr><th>三角形边长1:</th><td>";$str.="<input type=text name='length1' value=".$this->request["length1"]."></td></tr>";$str.="<tr><th>三角形边长2:</th><td>";$str.="<input type=text name='length2' value=".$this->request["length2"]."></td></tr>";$str.="<tr><th>三角形边长3:</th><td>";$str.="<input type=text name='length3' value=".$this->request["length3"]."></td></tr>";break;case 3:$str.="<tr><th>圆形半径:</th><td>";$str.="<input type=text name='radius' value=".$this->request["radius"]."></td></tr>";break;}$str.="<tr><td align=center colspan=2><input type=submit value='计算'></td></tr>";$str.="<input type=hidden name='act' value=".$this->request["action"].">";$str.="<input type=hidden name='action' value=".$this->request["action"].">";$str.="</form></table>";return $str;}}?>
ログイン後にコピー
index.php
<html><head><title>图形计算器</title></head><body><?php function __autoload($className){include ('class__'.ucfirst($className).'.php');}?><center><h2>图形周长和面积计算器</h2><hr><a href="index.php?action=1">矩形</a>||<a href="index.php?action=2">三角形</a>||<a href="index.php?action=3">圆形</a><br /></center><?php switch ($_REQUEST["action"]){case 1:$form=new Form("矩形",$_REQUEST,"index.php");echo $form;break;case 2:$form=new Form("三角形",$_REQUEST,"index.php");echo $form;break;case 3:$form=new Form("圆形",$_REQUEST,"index.php");echo $form;break;default:echo "请选择一个图形<br />";}if(isset($_REQUEST["act"])){switch($_REQUEST["act"]){case 1:$shape=new Rect($_REQUEST);break;case 2:$shape=new Triangle($_REQUEST);break;case 3:$shape=new Circle($_REQUEST);break;}echo "面积为:".$shape->area()."<br>";echo "周长为:".$shape->perimeter()."<br>";}?></body></html>
ログイン後にコピー

我这个眼神啊!搞定。犯了超级低级的错误。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles