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

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

詳細はこちら
PHP

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

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

4回答

905閲覧

オブジェクト指向のゲッターとセッターに対する return

rl0t_ryunosuke

総合スコア14

PHP

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

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

0クリップ

投稿2019/11/08 04:42

php初学者です!!
オブジェクト指向を勉強しているのですが、ゲッターにはreturnをつけて
セッターにはreturnを使わないのはなぜなのでしょうか?

そもそもreturnの意味や使う意図、echoとの違いなどもご教授いただきたいです。

よろしくお願いいたします。

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

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

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

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

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

miyabi_takatsuk

2019/11/08 04:59

ご自身でどこまで調べられましたでしょうか? もし、まだ調べてもいない場合はまず、ご自身で調べられるのをお勧めします。そして、調べて結果見つけたページのURLなど記載されるといいかと(調べたエビデンスとして) また、具体的にどのようなコードの時、とコードの記載もされるとなお回答つきやすくなるかと思います。
rl0t_ryunosuke

2019/11/08 05:26

ご指摘ありがとうございます。 以後気を付けます
m.ts10806

2019/11/08 05:39

質問は編集できます。 はじめのうちは質問テンプレートを利用した方が良いでしょう。 それに、調べてなにも検討がつかない内容って中々ないですよ。
m.ts10806

2019/11/08 05:52

解決済みのようですが回答しています。一応目を通しておいてもらえると今後の役に立つかと思いますので。(読む読まないはお任せしますが、このまま進めても成長は見込めないと感じたためのアドバイスです)
guest

回答4

0

ベストアンサー

return はオブジェクト指向と関係なく、関数の概念です。
return は関数の戻り値を意味します。

php

1function hoge() { 2 return 0 3} 4 5$a = hoge()  // a = 0

このように、戻り値は値として扱われます。
return の無い関数では戻り値が存在しないことを意味します。
getter はオブジェクトから値を取得する関数のため、return を書きます。
setter はオブジェクトに値を入れる関数のため、return は必要ありません。

echoとの違いなどもご教授いただきたいです。

echo は標準出力であり、プログラムの外に値を吐き出します。
return はあくまでプログラムの中で値を返すために使うものです。

投稿2019/11/08 04:58

nerianighthawk

総合スコア544

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

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

0

なんともいえませんがセッタも成功時にtrueを返すなどやりようはあります

PHP

1class hoge{ 2 private $fuga=0; 3 public function getFuga(){ 4 return $this->fuga; 5 } 6 public function setFuga($num=null){ 7 if(is_int($num)){ 8 $this->fuga=$num; 9 return true; 10 } 11 return false; 12 } 13} 14 15$hoge=new hoge; 16var_dump($hoge->getFuga());// 値は0 17var_dump($hoge->setFuga(1)); // 成功 18var_dump($hoge->getFuga());// 値は1に更新されている 19var_dump($hoge->setFuga("x")); // 失敗 20var_dump($hoge->getFuga()); // 値は更新されない 21$hoge->fuga="x"; // 直接変更はできない 22

投稿2019/11/08 05:19

編集2019/11/08 05:22
yambejp

総合スコア116694

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

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

0

オブジェクト指向を勉強しているのですが、ゲッターにはreturnをつけて
セッターにはreturnを使わないのはなぜなのでしょうか?

まんま言葉の意味通りなのですが、
ゲッターは値を取得するためのメソッドなので、
値を返すためにreturnが必要です。

セッターは渡された値を設定するためのメソッドで、
値を返す必要がないのでreturnが不要です。


そもそもreturnの意味や使う意図

メソッドないしは関数あたりをまず復習してください。

returnは呼び出し元に値を返したり、
そのメソッドの処理を終えるときに用います。
呼び出し元に処理を戻しますよという意味合いですね。


echoとの違い

echoはただ出力するだけです。
echoしただけで呼び出し元に値を返したりすることはできません。

呼び出し元で表示すべきかメソッド内で表示すべきかという話であれば
状況によって適切な方を選んでくださいという回答になります。

投稿2019/11/08 05:00

dice142

総合スコア5158

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

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

0

下記のようなルールは存在しません。

「セッターだからreturnを書いてはいけない」
「ゲッターだからreturnは必須」

エラーも出ません。

当該機能上で必要だからreturnを使い、不要だからreturnを省略します。
余談ですがreturnは引数必須ではないのでreturn;とだけ書くこともできます。

メソッドの引数を加工するのであればreturnなくとも処理結果を呼びもとに返すこともできます。

機能次第都合次第です。
セッターもゲッターもあくまで「そういう設計思想で作られた概念」にすぎません。

あと「勉強している」のであれば何かしら参考にされている資料や書籍があるのでしょう。そこに何も説明は書いてないのでしょうか?
きちんとオブジェクト指向を身に付けるためには、全体と本質を構造的に捉えた上で考察する力が必要です。
名前から何をやっているとか、どういう機能、どういう意味であるかとか、自分で生み出したり、コードや定義を読んで考えて理解していく必要があります。

ここで「ゲッターだからこうしなければならない」「セッターだからこうしなければならない」というのを教えられたまま固定で覚えるようなことをしてしまうとオブジェクト指向の学習は進まなくなります。問題が起きても対処できなくなります。

まずは自分で考えてその結果を以て「その考え方が合っているのか」を聞くようにすると良い意見をたくさんもらえるようになると思います。

老婆心ながらアドバイスをしてみました。

投稿2019/11/08 05:51

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問