回答編集履歴
4
補足
test
CHANGED
@@ -146,7 +146,7 @@
|
|
146
146
|
|
147
147
|
|
148
148
|
|
149
|
-
自分なりにコードをきれいにしてみましたので参考にしてください。フルーツを$fruits配列に持たせて、optionもそれをもとに生成するようにしています。なので$fruits配列だけにフルーツを追加すれば動きます。定義を一箇所にするとメンテしやすく読みやすいコードになると思います。
|
149
|
+
自分なりにコードをきれいにしてみましたので参考にしてください。フルーツを$fruits配列に持たせて、optionもそれをもとに生成するようにしています。なので$fruits配列だけにフルーツを追加すれば動きます。定義を一箇所にするとメンテしやすく読みやすいコードになると思います。また、メッセージを作る処理もクラスの関数にすると再利用もしやすくていいと思いました。
|
150
150
|
|
151
151
|
```php
|
152
152
|
|
3
そもそもメッセージを関数にしたらよいのでは
test
CHANGED
@@ -194,6 +194,28 @@
|
|
194
194
|
|
195
195
|
}
|
196
196
|
|
197
|
+
public function getMessage($joho) {
|
198
|
+
|
199
|
+
echo $this->getName();
|
200
|
+
|
201
|
+
if($joho == 'size'){
|
202
|
+
|
203
|
+
echo "大きさは";
|
204
|
+
|
205
|
+
echo $this->getSize();
|
206
|
+
|
207
|
+
}else{
|
208
|
+
|
209
|
+
echo "値段は";
|
210
|
+
|
211
|
+
echo $this->getPrice();
|
212
|
+
|
213
|
+
echo "円";
|
214
|
+
|
215
|
+
}
|
216
|
+
|
217
|
+
}
|
218
|
+
|
197
219
|
}
|
198
220
|
|
199
221
|
$fruits = array(
|
@@ -262,25 +284,7 @@
|
|
262
284
|
|
263
285
|
$joho = $_POST["joho"];
|
264
286
|
|
265
|
-
|
266
|
-
|
267
|
-
echo $fruits[$kudamono]->get
|
287
|
+
echo $fruits[$kudamono]->getMessage($joho);
|
268
|
-
|
269
|
-
if($joho == 'size'){
|
270
|
-
|
271
|
-
echo "大きさは";
|
272
|
-
|
273
|
-
echo $fruits[$kudamono]->getSize();
|
274
|
-
|
275
|
-
}else{
|
276
|
-
|
277
|
-
echo "値段は";
|
278
|
-
|
279
|
-
echo $fruits[$kudamono]->getPrice();
|
280
|
-
|
281
|
-
echo "円";
|
282
|
-
|
283
|
-
}
|
284
288
|
|
285
289
|
}
|
286
290
|
|
2
おまけ
test
CHANGED
@@ -137,3 +137,151 @@
|
|
137
137
|
- $nameや$sizeなどはpublicではなく、privateにしたほうがいいかもしれません。```$apple->name = 'hoge';```で書き換えてほしくなければですが。
|
138
138
|
|
139
139
|
- GET時には$_POSTを参照するのはよくないので、```if($_SERVER["REQUEST_METHOD"] == "POST"){}```で囲いました。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
----
|
144
|
+
|
145
|
+
**(おまけ)**
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
自分なりにコードをきれいにしてみましたので参考にしてください。フルーツを$fruits配列に持たせて、optionもそれをもとに生成するようにしています。なので$fruits配列だけにフルーツを追加すれば動きます。定義を一箇所にするとメンテしやすく読みやすいコードになると思います。
|
150
|
+
|
151
|
+
```php
|
152
|
+
|
153
|
+
<?php
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
class Fruit{
|
158
|
+
|
159
|
+
private $name;
|
160
|
+
|
161
|
+
private $size;
|
162
|
+
|
163
|
+
private $price;
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
public function __construct($name, $size, $price){
|
168
|
+
|
169
|
+
$this->name = $name;
|
170
|
+
|
171
|
+
$this->size = $size;
|
172
|
+
|
173
|
+
$this->price = $price;
|
174
|
+
|
175
|
+
}
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
public function getName(){
|
180
|
+
|
181
|
+
return $this->name;
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
public function getSize(){
|
186
|
+
|
187
|
+
return $this->size;
|
188
|
+
|
189
|
+
}
|
190
|
+
|
191
|
+
public function getPrice(){
|
192
|
+
|
193
|
+
return $this->price;
|
194
|
+
|
195
|
+
}
|
196
|
+
|
197
|
+
}
|
198
|
+
|
199
|
+
$fruits = array(
|
200
|
+
|
201
|
+
'apple' => new Fruit ("りんご","中","158"),
|
202
|
+
|
203
|
+
'orange' => new Fruit ("オレンジ","中","128"),
|
204
|
+
|
205
|
+
'melon' => new Fruit ("メロン","大","1280"),
|
206
|
+
|
207
|
+
'grape' => new Fruit ("グレープ","大","580"),
|
208
|
+
|
209
|
+
);
|
210
|
+
|
211
|
+
?>
|
212
|
+
|
213
|
+
<!DOCTYPE html>
|
214
|
+
|
215
|
+
<html lang="ja">
|
216
|
+
|
217
|
+
<body>
|
218
|
+
|
219
|
+
<form action="" method="post">
|
220
|
+
|
221
|
+
<p>果物:
|
222
|
+
|
223
|
+
<select name="kudamono">
|
224
|
+
|
225
|
+
<?php
|
226
|
+
|
227
|
+
foreach($fruits as $key => $fruit) {
|
228
|
+
|
229
|
+
echo "<option value='{$key}'>".$fruit->getName()."</option>\n";
|
230
|
+
|
231
|
+
}
|
232
|
+
|
233
|
+
?>
|
234
|
+
|
235
|
+
</select>
|
236
|
+
|
237
|
+
の
|
238
|
+
|
239
|
+
<select name="joho">
|
240
|
+
|
241
|
+
<option value="size">大きさ</option>
|
242
|
+
|
243
|
+
<option value="price">値段</option>
|
244
|
+
|
245
|
+
</select>
|
246
|
+
|
247
|
+
</p>
|
248
|
+
|
249
|
+
<p><input type="submit" value="送信"></p>
|
250
|
+
|
251
|
+
</form>
|
252
|
+
|
253
|
+
<br>
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
<?php
|
258
|
+
|
259
|
+
if($_SERVER["REQUEST_METHOD"] == "POST"){
|
260
|
+
|
261
|
+
$kudamono = $_POST["kudamono"];
|
262
|
+
|
263
|
+
$joho = $_POST["joho"];
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
echo $fruits[$kudamono]->getName();
|
268
|
+
|
269
|
+
if($joho == 'size'){
|
270
|
+
|
271
|
+
echo "大きさは";
|
272
|
+
|
273
|
+
echo $fruits[$kudamono]->getSize();
|
274
|
+
|
275
|
+
}else{
|
276
|
+
|
277
|
+
echo "値段は";
|
278
|
+
|
279
|
+
echo $fruits[$kudamono]->getPrice();
|
280
|
+
|
281
|
+
echo "円";
|
282
|
+
|
283
|
+
}
|
284
|
+
|
285
|
+
}
|
286
|
+
|
287
|
+
```
|
1
補足
test
CHANGED
@@ -133,3 +133,7 @@
|
|
133
133
|
- $kudamonoがappleの場合、$$kudamonoは$appleなので、$$kudamon->fName()で$apple->fName()ということになります。
|
134
134
|
|
135
135
|
- 関数名はfNameよりgetNameとかのほうが普通だと思います。
|
136
|
+
|
137
|
+
- $nameや$sizeなどはpublicではなく、privateにしたほうがいいかもしれません。```$apple->name = 'hoge';```で書き換えてほしくなければですが。
|
138
|
+
|
139
|
+
- GET時には$_POSTを参照するのはよくないので、```if($_SERVER["REQUEST_METHOD"] == "POST"){}```で囲いました。
|