有一个我正在使用的类,我在类中重写变量以将它们更改为我需要的值,但我也不确定是否或如何处理问题。我需要在类调用之前添加为每个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个网址。
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。 (?key = keyvalue)
答案 0 :(得分: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());
- 更新 -
有几个选项,您可以将密钥作为调用代码的一部分附加到您的网址,如下所示:
$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');
我想重点是,如果没有将变量连接到成员变量初始化,你就不能做你最初要求的事。