2012-04-04 13 views
2

私が使用しているクラスがありますが、クラスの変数を変更して必要な値に変更していますが、問題。クラスが呼び出す前に、このURLのそれぞれに生成されるキーを追加する必要があります。クラスファイル自体を変更することはできません。拡張クラスのpublic変数内で変数を使用するには

use Theme/Ride 

class ETicket extends Ride { 

    public $key='US20120303'; // Not in original class 
    public $accessURL1 = 'http://domain.com/keycheck.php?key='.$key; 
    public $accessURL2 = 'http://domain.com/keycheck.php?key='.$key; 

} 

私は、パブリッククラス変数の設定では変数を使用できないことを理解しています。実際にこのようなことを適切な形式で行う方法は、どういうものか分かりません。

私のOOPスキルは弱いです。私はそれを認めます。だから、誰かが私がそれを読んで手がかりを得ることができるところに提案があれば、それも高く評価されるだろう。私はダミーのためにOOPが必要だと思います。 =/

---- UPDATE ---

初期RIDEクラスが設定2つのURLを有します。

public $accessURL1 = "http://domain.com/index.php"; 
public $accessURL2 = "http://domain.com/index2.php"; 

RIDEクラスが私の新しいドメインを使用するように、それらをオーバーライドする必要がありました。

しかし、私はまた、私はそれらをオーバーライドするときときにURLにパラメータとして他の場所($キー)から変数を渡したい...

class ETicket extends RIDE { 
    public $accessURL1 = 'http://mydomain.com/myindex.php'; 
    public $accessURL2 = 'http://mydomain.com/myindex2.php'; 
} 

を私は次のように追加することができ、それが動作しますI RIDEを呼び出すと、最後にKEYの値を持つURLがあります。あなたは$キーを変更するコードを呼び出す許可したくない場合は、あなたのような何かを行うことができ、

答えて

1

あなたの近く(=キー値のキー?):

class ETicket extends Ride { 

    public function getKey() 
    { 
     return 'US20120303'; 
    }  

    public function generateUrl() 
    { 
     return 'http://domain.com/keycheck.php?key=' . $this->getKey(); 
    } 
} 

// Calling code example 
$eTicket= new ETicket(); 

// $key is a member of ETicket class, so just call on generateUrl which will 
// build and return the url 
var_dump($eTicket->generateUrl()); 

また、変更したコードを呼び出して許可することができます必要に応じて、キー、公共のセッター/ゲッター追加することによって:

class ETicket extends Ride { 

    protected $key; 

    public function setKey($key) 
    { 
     $this->key = $key; 
    } 

    public function getKey() 
    { 
     return $this->key; 
    } 

    public function generateUrl() 
    { 
     return 'http://domain.com/keycheck.php?key=' . $this->getKey(); 
    } 
} 

// Calling code example 
$eTicket= new ETicket(); 

$eTicket->setKey('US20120303'); 
var_dump($eTicket->generateUrl()); 

- UPDATEを -

は、どちらかAPPEのオプションがいくつかあり、あなたがすることができます

$eTicket= new ETicket(); 

$url = $ride->accessURL1 . '?key=US20120303'; 

それとも、私が先に述べたように(直接キーを受け入れるように若干変更)メソッドを使用します。このような呼び出しコードの一部として、あなたのURLへのNDの鍵、

class ETicket extends Ride 
{ 
    public function generateUrl($key) 
    { 
     return $this->accessURL1 . '?key=' . $key; 
    } 
} 

$eTicket= new ETicket(); 

$url = $eTicket->generateUrl('US20120303'); 

私は推測しますつまり、変数をメンバ変数の初期化に連結するのではなく、もともと尋ねたことはできません。

+0

こんにちは、この回答は役に立ちましたか? –

+0

応答が遅れて申し訳ありません。 私はあなたがやっていることを得ていますが、私が使用している環境内でそれをどのように実装するかはわかりません。私はそれが私の持つ問題の記述であると推測しています。 最初の質問を拡張しようとします。 –

関連する問題