🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1228閲覧

phpでのオブジェクト指向の練習

otyatya_no_tya

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2020/11/28 13:30

前提・実現したいこと

phpで雑かつ簡単にオブジェクト指向の練習をしています。
インスタンスを作成したあとsetKanojoした後getKanojoで$anata->nameを表示したいです

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

やった! Notice: Undefined property: Boku::$getKanojo in C:\xampp\htdocs\object.php on line 85

該当のソースコード

PHP

1<?php 2 3class Hito 4{ 5 private $name; 6 public $kareshi; 7 public function __construct($name) 8 { 9 $this->name = $name; 10 } 11 12 public function naku() 13 { 14 return 'うえええん'; 15 } 16 17 public function ureshii() 18 { 19 return 'やった!'; 20 } 21 22 public function horeta($hito) 23 { 24 if (get_class() == 'Hito') { 25 return true; 26 } else { 27 return false; 28 } 29 } 30 31 public function kokuhaku($answer) 32 { 33 if ($answer == 'OK') { 34 return true; 35 } else { 36 throw new Anata_kareshigairu; 37 } 38 } 39 40 public function getName() { 41 return $this->name; 42 } 43 44} 45 46class Boku extends Hito 47{ 48 private $name; 49 public $kanojo; 50 public function __construct($name, $kanojo) 51 { 52 $this->name = $name; 53 $this->kanojo = $kanojo; 54 } 55 56 public function setKanojo($kanojo) { 57 $this->kanojo = $kanojo; 58 } 59 60 public function getKanojo() { 61 return $this->kanojo; 62 } 63} 64 65class Anata_kareshigairu extends Exception 66{ 67 public function __construct() 68 { 69 parent::__construct('彼氏いるじゃん'); 70 } 71 72 public function getMessages() { 73 return '彼氏いるじゃん'; 74 } 75} 76 77$err = new Anata_kareshigairu(); 78$boku = new Boku("男性", null); 79$anata = new Hito("女性"); 80if ($boku->horeta($anata)==true && $boku->kanojo==null) { 81 try { 82 if($boku->kokuhaku('OK')==true) { 83 echo $boku->ureshii(); 84 $boku->setKanojo($anata->getName()); 85 echo $boku->getKanojo; 86 } else { 87 echo $boku->naku(); 88 } 89 } catch(Anata_kareshigairu $e) { 90 echo $boku->naku(); 91 echo $err->getMessages(); 92 } 93} 94

補足情報

xampp環境

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

echo $boku->getKanojo;に()をつけ忘れていただけでした。

コードレビューしていただける方いたらお願いいたします。

投稿2020/11/28 13:34

otyatya_no_tya

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/29 02:50 編集

自分で気づけて直せたなら、自分の回答にベストアンサーをつけて終了でいいんじゃないでしょうか、と。 そもそもこのコードが目指す目的や得たい結果についてなんの説明もなく、構造や設計についても説明がなく、ただコードを読んでなんか言ってくれってのは、回答者の趣味趣向に合う合わないを評価するだけになりますよ。
m.ts10806

2020/11/28 23:17

実現したい要件やオブジェクト指向によりどんな情報を管理してどう扱いたいのか書かれないと他者にはレビュー不可能です。 ただ単にclassで定義するだけならハイコストなのでやめたほうが良いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問