簡體   English   中英

如何在擴展的 class 公共變量中使用變量

[英]How do I use a variable within an extended class public variable

有一個我正在使用的 class,我正在覆蓋 class 中的變量以將它們更改為我需要的值,但我也不確定是否或如何處理問題。 我需要在 class 調用它們之前為每個 URL 添加生成的密鑰。 我無法修改 class 文件本身。

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;

}

我知道您不能在公共 class 變量的設置中使用變量。 只是不確定以正確的格式實際執行此類操作的方法是什么。

我的 OOP 技能很弱。 我承認。 因此,如果有人建議我在哪里可以閱讀它並獲得線索,我也將不勝感激。 我想我需要 OOP 作為 Dummies。 =/

- - 更新 - -

最初的 RIDE class 設置了 2 個 URL。

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

我要覆蓋它們,以便 RIDE class 將使用我的新域。

我可以添加以下內容並且它有效......

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

但是,當我覆蓋它們時,我還想將來自其他地方的變量($key)作為參數傳遞給 URL,因此當我調用 RIDE 時,它有一個 URL,其末尾的值為 KEY。 (?鍵=鍵值)

您關閉,如果您不想讓調用代碼更改 $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());

如果需要,您還可以通過添加公共 setter/getter 來允許調用代碼更改密鑰:

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

--更新--

有幾個選項,您可以將 append 作為調用代碼的一部分作為 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');

我想關鍵是,如果沒有將變量連接到成員變量初始化,你就不能做你最初要求的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM