PHP重载函数问题与类

王子

我有一个名为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函数,而不是将其传递两次?

这个脚本的作者无处可寻,我已将其修复。

拉斐尔·劳林多(Rafael Laurindo)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章