• ベストアンサー

【PHP】set・getの使用について

質問させていただきます。 PHPではset等プロパティ宣言をしなくても動作はしますが、皆様はPHPで開発する際に使用する変数等全てアクセサを介して使用しているのでしょうか? もし、アクセサを介す場合、直変数で使用する場合など分けていらっしゃる方がいるのであれば、 どういうメリット等からそのような方法を採用されているのか教えていただけると助かります。 何卒よろしくお願い致しますm(_ _)m

  • MAS-B
  • お礼率100% (4/4)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

基本的に業務で行う場合は全部アクセサを設けています。 どんな時でも、メンバ変数をpublic宣言することはしません。 クラス設計として良しとされない方法論は取りません。 大したアクセス数を望めないもの(主にプライベートなもの)はマジックメソッドで処理してます。 それでも、値の設定を行う場合などに特定の条件下でないとセットされないなどの、 制御を必要とする場合はアクセサを個別に実装します。 メンバ変数をpublicにして直接アクセスしようとする実装方法は、単に正しい設計を 無視しためんどくさがり屋か、チームや他社との共同開発経験が浅かったり、 利用側に好き勝手された経験が少ない人だと思います。 多分。 メンバ変数の直接操作におけるメリットは、『生産性は最も高い』でしょう。 その分、その人しかいじれない怖いソースになると思いますが。

MAS-B
質問者

お礼

ご回答ありがとうございます。 とても納得できました。一人で開発を行う環境なものですから、 実際に『生産性が最も高い』方法で開発を行っておりました。。 現在はメンバ変数をprivateな環境に変えつつありますが、 どの範囲までアクセサを設けるべきなのかどうか等を考える様になり、質問させていただきました。 PHPは直接操作でも中途半端に動いてしまうので、良い様に言えばお手軽ですが、 ソースが手に負えなくなる可能性の高い言語ですね。 ありがとうございましたm(_ _)m

関連するQ&A

  • PHPのセッションについて

    現在PHPでの開発を行っております。 環境は、PHP4.0.5、サーバはレンタルでFreeBSDです。 セッションに格納する変数について教えていただきたいと思っております。 セッションに変数をセットする際に、session_registerを使用しているのですが、格納される変数の型はどこで指定するのでしょうか。 例えば、今、セッション変数として、$no="001"をsession_register("no")として、格納しているのですが、 session_registerで値を取得しようとすると、「1」が返ってきます。 セッション変数に格納した時点で、どうやら数値に変換されているようなのですが、文字列として格納することはできないのでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • PerlからPHPへ移行したときの注意事項は

    PerlからPHPに移りまして、戸惑うことがあります。 Perlでは、 use strict; my $hensuu = 1; とレキシカル変数としなければ、変数未宣言となり スペル間違いの変数の使用が避けられるのですが、 PHPでは、 $hensuu = 1; と、何の設定もなく、利用時に $hensu += 0; としても問題なく動作します。 これって危険なのですが、みなさんはどう対処していますか? あと、PerlからPHPにソース移行する場合に 気をつけないことがありましたら、教えてください。

    • ベストアンサー
    • PHP
  • PHPにおいて変数の初期化

    PHPで変数を初期化する際の初期化の方法について質問です。 私はPHPで変数を初期化するさい、視認しやすい様にsettype関数を用いることが おおいです。 単純に $hoge = array(); $foo = ""; $hoo = 1; とするより settype($hoge,"array"); とした方が、明確に 「ああ。この変数はこの行数で初めてでてきたんだな」 という具合に判断できるとおもっているからです。 例えばJSだと var hoge; という具合に、変数そのものの宣言を先んじておこなえますよね。 このように明確な変数宣言がわかりやすいとおもうのですが・・・・。 みなさまがたはPHPではどのように変数を初期化しますか? ご意見おきかせください。

    • 締切済み
    • PHP
  • PHPでのClass使用について

    これまで社内で1人でPHPコーディングを担当していたので、複数人での開発を経験した事がなく、Classを使用した事がありません。 PHPでもClassを使用するのが主流かと思うのですが、Classの有用性が今ひとつ理解出来ずにいます。 開発用のライブラリは用意しているのですが、「接続用function」などfunctionのみを使用してコードを纏めています。 現状このやり方で全く困っていないのですが、Classを使用する事でどんなメリットがあるのでしょうか? 使い慣れていないせいなのでしょうが、Class化する事で機能を纏め過ぎてより面倒臭くなっているような気がします…。

    • ベストアンサー
    • PHP
  • PHPでMVC requireや$_GET記載場所

    PHPで小規模~中規模なシステム構築を行っております者です。 例えば、下記のようなものです。 (1)小規模:簡易な新着ニュースの更新のみ行うCMSなど (2)中規模:ショッピングカートなど 今回、自身の作ってきたシステムをリニューアルするにあたり、 勉強も兼ねてMVCというものを意識して構築してみようかと思ったのですが、 調べれば調べるほど役割やファイルの分け方で迷ってしまうばかりです。(特にCとM) なお、cakePHPなどは使っておりません。 smartyは使用しています。 (1)を使って示しますと、例えば下記のようなファイルわけをしていたとします。 (レイアウト崩れが怖いため、中途半端なツリー記載ですがご勘弁ください。) index.php ・・・ IDパスが未入力の場合はログイン画面を、入力済の場合は管理画面トップ ┃ ┣ controllers ━ control用php ┃ ┣ models ━ 登録処理class.php DB接続class.php ログイン関連class.php(ログイン・ログアウト処理、ログイン保持など) ┃ ┣ views ━ 各種tpl ┃ ┗ その他ファイル(smarty,pear,DB接続情報等記載ファイル,共通使用変数など記載ファイル) 色々なところで見かけるのは、C.M.V、いずれもclassなどが記載してあるのみですが、 そのクラスをどこで宣言し、どこで使っているのかが良く分かりません。 例えば、 パラメーターが ・・・・・?action=config&news_id=15 とあり、 DB内のid15の記事を抽出し、 今行うべき処理が?action=configより記事の更新だと判断し、 画面を表示するという処理の流れがあるとします。 その場合、 ●パラメーターの$_GETはどこに書くのか? ●?action=configより処理が記事の更新だとの判断は ●その他ファイル(smarty,pear,DB接続情報等記載ファイル,共通使用変数など記載ファイル)の読み込みはどこで行うのか? ●modelsのclassをnewで宣言するのはどのファイルなのか? など、 現在私が行っている方法は、 index.phpに上から ・セッションスタート ・各種定数および変数の記載 ・smarty設定 ・DBクラスなど必ず使うものを宣言 ・パラメーターから判断して必要なクラスを読み込んで宣言+処理記載(switchで切り替えてます) ・smartyのdisplayでtplの内容を表示 というものをすべて記載しております。一応形としてはCにあたるのでしょうか。 上のツリーではcontrollers ディレクトリがありますが、 この内どれかをそこに移し、index.phpから読み込むべきでしょうか? (今のところ役割がみあたりません) また、modelsというのは要するにclassなどが記載してあるだけでしょうか? models内ではnewせず$_GETせず、models内のclassの処理を実際に 実行する記載は「C」に書くということでしょうか。 よくわからない文章になってしまい申し訳ございません。 正解はないかもしれませんので、あくまで皆様の行っているやり方や一般的に使われている方法で結構です。 ファイルわけや処理の記載についてお教えいただけると幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • C#のプロパティグリッドの内容を手動で。

    こんばんは。 C#のプロパティグリッドを利用したプログラムを書きたいと思っています。 対象のとなるオブジェクトのアクセサを用意して、 propertyGrid.SelectedObject = obj ; とすれば全部自動で表示してくれて便利なのですが、 全部表示されると都合が悪く、必要なものだけを表示させたいと思っています。 またアクセサで取れるもの以外のプロパティもセットしたいと思っています。 この場合、プロパティグリッドに手動でセットしたいと思っていますが手順が分かりません。 手動でセットするにはどのようにすればよろしいでしょうか? 参考サイトがあれば教えていただけないでしょうか。

  • phpのオブジェクトの使用方法について

    プログラミングはPHPが初めてで、プログラミングというもの自体に慣れていないこともあり、初心者用の本を買ってそれに従って進めているのですが、オブジェクトのところで理解するのに行き詰まってしまいました。 検索してみたものの、以下のページがわかりやすそうだったのですが、これらを読んでみてもいまいちしっくりときません。 http://www.komonet.ne.jp/~php/chap10.htm http://www.stackasterisk.jp/tech/php/php03_09.jsp オブジェクト指向のコンセプトは把握できているつもりです。いつでも使い回しができるコードの束のようなものだと理解しています。しかし、その用法で今まで自分が読んできたものと違うことがあり、また、それらを使用する必然性にたいする理解ができません。いったいどういったタイミングで使用するのでしょうか?以下にそれらの例を挙げて見ました。 1.var $aaa = "hoge"; このvarはいったいどこからやってきたのでしょうか?それに関する解説が本にもWEBにも見つけられなくて困っています。これはクラスの定義内でのみ有効なのでしょうか?何のために使用するのでしょうか? 2.$this -> aaa これをなぜ、単に$aaaと表記しないのでしょうか? 3.プロパティ(property) なぜクラス内の変数(variable)をわざわざそう呼ぶのでしょうか? 4.メソッド(method) なぜクラス内の関数(function)をあえてそう呼ぶのでしょうか? 5.コンストラクタ(Constructor)、継承(Inheritance) 1~4の部分で躓いているためか、いまいちその必要性が理解できません。 もしご存知の方おられましたご教授していただけるとうれしく思います。

    • ベストアンサー
    • PHP
  • javascriptとPHP

    javascriptとPHPで図書管理システムを作成しようとしております。 そこでPHPをメインに組んで行こうと思うのですが、 WEBシステムを開発するとき、javascriptは補助に使おうと思っているのです。(入力チェック) javascriptを無効にされた場合、javascriptを使用した機能は全て使用出来なくなると思うのです。 私は、javascriptを補助にしてWEBシステムを開発するとき、テキスト等の入力チェックに使用するのですが、皆様はどのようなときに使用されるのでしょうか? ajax等も使うタイミングがいまいち分からないので、もしよろしければ教えて頂けると助かります。

    • ベストアンサー
    • PHP
  • PHPソースの解析やデバッグに使うツール

    PHPソースの解析やデバッグに使うツール c言語などのコンパイラ言語には優秀なIDEが多数ありますが 皆さんはPHPの開発をする時どのようなツールを使用しているのですか? フリーのPHPソースを解析する際、ステップ実行しながら変数の中身をウォッチ したりしながらソース解析したいのですが、VisualStadioのような便利なIDEはないのですか? そのようなツールなしにPHPソースを書くとすると無茶苦茶大変な気がするのですが 皆さんは、その困難を乗り越えてPHP開発をされているのですか? 素人な質問ですみませんが、詳しい方がいましたら教えてください。

    • ベストアンサー
    • PHP
  • IFRAME内PHPのセッション変数取得が出来ない

    既存のHTMLサイトに一部機能追加したいだけ+ブラウザに表示されるURLの関係で、必要部分だけIFRAMEでPHPサーバーのファイルを呼び出して表示させようと考えました。 IFRAMEを記述するHTMLファイル設置サーバーはPHPが使用出来ません。 <iframe src="http://hogehoge/login.php"></iframe> とHTML内にログイン用PHPを表示させ、ボタン押下でログイン判定 →データをセッション変数にセット →header("Location: http://hogehoge/form.php");で画面遷移 →フォーム用PHPに先ほどセットしたセッションデータ表示 とこんな感じの処理がしたいのですが、これがFireFoxだとうまく動くのに、IEだと動いたり動かなかったりします。(動く=開発環境である私のPC、動かない=他全て) ボタン押下で自分自身にPOSTしたデータは正しく受け取って画面遷移まで処理しているのですが、遷移後のページでセッション取得しようとすると取得出来ないようなのです。 IFRAMEを通さず直接URL叩いた場合は、FF・IEどちらも正常に動いています。 session_name('hoge'); session_start(); はPHP先頭に記載してあります。 IFRAMEを使用して外部サーバーのPHPを使用する際に、気をつけねばならない事などがあるのでしょうか… もし解決方法に思い当たる方がいらっしゃいましたら、どうかご回答宜しくお願いいたします。 またもし補足等必要でしたらご指摘下さい。

    • ベストアンサー
    • PHP