2

私が使用しているクラスがあり、クラス内の変数をオーバーライドして必要な値に変更していますが、問題を処理するかどうか、またはその方法もわかりません。クラスがそれらを呼び出す前に、この URL のそれぞれに生成されたキーを追加する必要があります。クラスファイル自体を変更できません。

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が必要だと思います。=/

- - アップデート - -

最初の RIDE クラスには 2 つの URL が設定されています。

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

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

私は以下を追加することができ、それは動作します...

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

ただし、変数をオーバーライドするときに、他の場所からの変数 ($key) をパラメーターとして URL に渡したいので、RIDE を呼び出すと、末尾に KEY の値を持つ URL があります。(?キー=キー値)

4

1 に答える 1

1

コードを呼び出して $key を変更したくない場合は、次のようにすることができます。

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());

--更新--

いくつかのオプションがあります。次のように、呼び出しコードの一部としてキーを URL に追加できます。

$eTicket= new ETicket();

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

または、前述の方法を使用します (キーを直接受け入れるようにわずかに変更されています)。

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

$eTicket= new ETicket();

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

ポイントは、変数をメンバー変数の初期化に連結することなしに、最初に要求したことを実行できないということだと思います。

于 2012-04-04T05:38:34.603 に答える