ここから本文です

PHPにてオブジェクト指向について学んでいます。 下記の文で同じような文が繰り返...

has********さん

2018/3/212:11:18

PHPにてオブジェクト指向について学んでいます。
下記の文で同じような文が繰り返されているので省略できる部分
または間違っている記述などありましたら教えていただきたいです。

<?php
class tomo {
public $name;
public $sex;
}

$tarou = new tomo ();
$kyoko = new tomo ();
$keita = new tomo ();

$tarou->name = "太郎";
$kyoko->name = "京子";
$keita->name = "啓太";

$tarou->sex = "男";
$kyoko->sex = "女";
$keita->sex = "男";

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>オブジェクト指向</title>
</head>
<body>
<h1>友達</h1>
<p><?php echo $tarou->name,"の性別は",$tarou->sex; ?></p>
<p><?php echo $kyoko->name,"の性別は",$kyoko->sex; ?></p>
<p><?php echo $keita->name,"の性別は",$keita->sex; ?></p>

</body>
</html>

閲覧数:
190
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2018/3/215:55:17

オブジェクト指向と直接は関係ありませんが、同じことを繰り返し行うなら配列として処理することを考えましょう。

$tarou, $kyoko, $keita と変数名を分ける必要はありませんよね?


>public $name;
>public $sex;

無闇にgetter/setterを使うのもアレですが、publicばかりというのも如何なものでしょうか。また名前と性別を必須項目とするならばコンストラクタで引き渡すことも考えてもいいのでは?

<?php
class tomo {
private $name;
private $sex;

function __construct() {
if (func_num_args() > 1) {
$this->name = func_get_arg(0);
$this->sex = func_get_arg(1);
}
}
function getname() {
return $this->name;
}
function getsex() {
return $this->sex;
}
}

$friends[] = new tomo("太郎", "男");
$friends[] = new tomo("京子", "女");
$friends[] = new tomo("啓太", "男");
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>オブジェクト指向</title>
</head>
<body>
<h1>友達</h1>
<?php foreach ($friends as $friend) {
printf('<p>%sの性別は%s</p>' . PHP_EOL, $friend->getname(), $friend->getsex());
}
?>
</body>
</html>

質問した人からのコメント

2018/3/6 10:14:04

ありがとうございます!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる