我有一个名为ClientPolicy的名为此类的类
class ClientPolicy {
var $serverHost="www.example.com";
var $httpPort = 80;
var $httpsPort = 443;
var $appKey;
var $secKey;
var $defaultContentCharset = "UTF-8";
}
另一个类文件名SyncAPIClient如下所示
class SyncAPIClient{
function SyncAPIClient(ClientPolicy $clientPolicy) {
$this->clientPolicy = $clientPolicy;
}
function SyncAPIClient($appKey, $appSecret) {
$this->clientPolicy = new ClientPolicy();
$this->clientPolicy->appKey=$appKey;
$this->clientPolicy->secKey=$appSecret;
}
}
我的问题是
1.)如果您在SyncAPIClient中检查函数,您会注意到ClientPolicy类在变量之前作为参数传递,这实际上是什么意思?在函数参数中传递类的本质是什么?
2.)我的脚本日志中出现错误“无法重新声明SyncAPIClient :: SyncAPIClient()”,原因是在SyncAPIClient类中两次调用了SyncAPIClient函数。我该如何解决这个问题?有没有更好的方法来编写此SyncAPIClient函数,而不是将其传递两次?
这个脚本的作者无处可寻,我已将其修复。
1)在这里$clientPolicy
,传递给此函数的变量必须是ClientPolicy实例。
这样,如果传递的参数与ClientPolice
类的实例不同,则会生成错误。
function SyncAPIClient(ClientPolicy $clientPolicy) {
$this->clientPolicy = $clientPolicy;
}
https://wiki.php.net/rfc/typed_properties_v2 https://laravel-news.com/php7-typed-properties
2)Cannot redeclare SyncAPIClient::SyncAPIClient()
引起该错误是因为您试图声明两个名为的函数SyncAPIClient ()
。
如果在第一个SyncAPIClient()
方法,你只是想保存$clientPolicy
的$this->clientPolicy
,你可以用魔术方法__construct
。或者只是尝试更改其中一个功能的名称,问题应该是一个问题。
class SyncAPIClient{
__construct(ClientPolicy $clientPolicy) {
$this->clientPolicy = $clientPolicy;
}
function SyncAPIClient($appKey, $appSecret) {
$this->clientPolicy = new ClientPolicy();
$this->clientPolicy->appKey=$appKey;
$this->clientPolicy->secKey=$appSecret;
}
}
https://www.php.net/manual/zh-CN/language.oop5.decon.php http://www.zentut.com/php-tutorial/php-constructor-and-destructor/
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句