回答編集履歴

4

補足

2017/01/10 14:23

投稿

popobot
popobot

スコア6586

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

そもそもメッセージを関数にしたらよいのでは

2017/01/10 14:23

投稿

popobot
popobot

スコア6586

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]->getName();
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

おまけ

2017/01/10 14:21

投稿

popobot
popobot

スコア6586

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

補足

2017/01/10 14:12

投稿

popobot
popobot

スコア6586

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"){}```で囲いました。