2009-08-17 9 views
1

私はクラスを再フォーマットする過程を踏み出しています(私のクラスでは同じ視界ですべてを設定しています)。プライベートとgetters/setterは、ほとんどの場合公開する必要があります。セッター/ゲッターズ、可視性[OOP] in PHP

プロパティを取得するにはちょうど$ path-> propertynameを実行しますが、私はsetter/gettersを持つ方が現実的です。ゲッターを実装する場合は、プロパティごとに1つずつ作成するのか、それともクラス全体で1つ作ることができますか?たとえばコントローラ名を取得したいとします。

public function getController() { 
    return $this->controller; 
} 

コントローラのプライベートプロパティが返されますか?より一般的なゲッター/セッター、または私にはのセットを得るハイブリッドメソッドを持つのが一般的ですか?ここで

は、クラス構造体(単にプロパティ/メソッド)です:

class urlParser { 

    public static $url  = ''; 
    public static $controller = ''; 
    public static $baseController = ''; 
    public static $urls  = ''; 
    public static $template  = ''; 
    public static $captures  = ''; 
    public static $contentXML = ''; 

    function __construct($urls) { 

     $this->urls = $urls; 

     $this->baseController = $urls['default']; 

     $this->get_url(); 
    } 

    public function get_url() { 
     // sets following properties: 
     // url, template, controller, contentXML, baseController 
    } 
} 
+1

質問をより明白にするために質問を更新できますか?あなたが求めていることを知る前に、誰もそのコードをすべて調べることはありません。 – Blixt

+0

Ok - 私の質問をもう少し簡単に更新しました。 –

答えて

1
各プライベートデータフィールドのゲッターとセッターを持ってしてみてください

セッターとゲッターがある場合は意味がありません

もしコントローラーを返す以外に何かをしなければならない場合は、何もしなければセッターが必要ないのでゲッターは必要ありません。それが設定された後でプロパティを持つ。

ゲッターとセッターが本当に必要な場合は、すべてのプロパティに対して__getと__setのマジックメソッドを使用できます。しかし、上記のようなケースであれば、それは全く意味がありません。

0

は、PHPでのオーバーロードを見てみましょう:正確に何をしたい行う可能性があります2つのマジックメソッド__get()__set()http://php.net/overload

があります

0

PHPオブジェクトにはちょっとしたものがあります(混乱する可能性があるので、私はそれらのすべてを使用していませんが、magic methods)。あなたが探しているものは__get()__set()です。データフィールドを非公開にすることを選択した場合は、コードをすべてリファクタリングする必要があります(フィールドに誤ってアクセスする他のコードを持たないようにする必要があります)。維持する。

をけれども、私は通常、あなたが簡単に各フィールドの検証を一切見ることができます。プラス、私はPHPの開発者よりもJava開発者のより多くのだから。