質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Q&A

解決済

1回答

1367閲覧

PHPの関数で、一つの関数のためにクラスを生成する理由はなんですか?

novie

総合スコア21

PHP

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

0グッド

1クリップ

投稿2014/12/15 04:29

これまで、一つの関数が格納されているクラスをたくさん見てきました。
見る度疑問に思っていたのですが、なぜ一つの関数だけをクラスに格納するのですか
何か理由があるのですか?

下記に自分の考察を記します。

下記の二つに関しては、特に違いがないと思っています。

lang

1<?php 2class TestClass { 3 4 private $user_name = "hoge tarou"; 5 6 function middleNameIn1($middle_name) { 7 $name = explode(" ",$this->user_name); 8 $full_name = $name[0]." ".$middle_name." ".$name[1]; 9 return $full_name; 10 } 11 12 function middleNameIn2($middle_name ) { 13 $user_name = "hoge tarou"; 14 $name = explode(" ",$user_name); 15 $full_name = $name[0]." ".$middle_name." ".$name[1]; 16 return $full_name; 17 } 18} 19 20$tc = new TestClass(); 21$middle_name = "D"; 22$name = $tc->middleNameIn($middle_name); 23echo($name); 24?>

私としては、$user_nameがプライベートであることが一番の理由だと思っています。
そのため、グローバルなスコープではアクセスすることができないようにしたいのだと思います。

**middleNameIn1()**のケースでは、なぜ外に変数を出しているのかも知りたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

第一に、クラスは単なる"関数の集まり"というわけではありません。
クラスはオブジェクト、またはエンティティを表すためにあります。
その与えられたエンティティで、必要なデータと作動するメソッドをカプセル化しているはずです。

第二に拡張性と依存性の問題です。
メソッドの中に変数を定義してしまうとその変数を使うとき、変更があるときにバグを仕込む恐れがでてきます。後は変数自体を切り替えられるようにしてほしいなどの後から要望にも対応しやすくなります。
なのでできるだけ依存度を減らして変わりうるものはできるだけ分けましょう。

時々、定義するためだけに一つのメソッドのみが必要なオブジェクトのクラスもあります。

投稿2014/12/15 10:49

isaotsuneda

総合スコア316

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問