1

私はクラスを再フォーマットしているところです(以下を参照)-クラスですべてを同じ可視性で設定するのを間違えたと思いますが、プロパティは実際にはプライベートであり、ゲッター/セッターはほとんどの場合パブリックである必要があります。

プロパティを取得するには、$ path-> propertynameを実行しますが、setter/getterを使用する方が実用的であることに気付きました。ゲッターを実装する場合、プロパティごとに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
    }
}
4

3 に答える 3

1

あなたの場合にセッターとゲッターを持っていることは無意味です。

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

ゲッターとセッターが本当に必要な場合は、すべてのプロパティに__getおよび__setマジックメソッドを使用できます。しかし、私が上で説明したような場合、それはまったく無意味です。

于 2009-08-17T12:31:48.183 に答える
0

phpでのオーバーロードを見てください:http://php.net/overload

2つの魔法の方法が__get()あり、__set()どちらがあなたが望むことを正確に行うかもしれません

于 2009-08-17T12:30:38.463 に答える
0

PHPオブジェクトには、いくつかの優れた魔法のメソッドがあります(ただし、混乱する可能性があるため、すべてを使用するわけではありません)。あなたが探しているのは__get()__set()です。データフィールドをプライベートにすることを選択した場合でも、すべてのコードをリファクタリングする必要があります(これにより、他のコードがフィールドに誤ってアクセスしないようにする必要があります。このようにすると、コードが少し良くなり、簡単になります。維持する。

ただし、各フィールドの検証を簡単に確認できるため、通常、プライベートデータフィールドごとにゲッターとセッターを用意するようにしています。さらに、私はPHP開発者というよりもJava開発者です。

于 2009-08-17T12:31:02.673 に答える