[英]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.