0

我想知道如何在类中的函数之间传递已在其他地方设置的对象?编辑:因此,如果尚未设置默认值,则该函数仅使用默认值。

因此,例如下面我在构造函数中有对象 objAuthParams 中的默认参数。如果我想调用该类并更改这些参数,我知道我可以通过创建一个新类来做到这一点,但在那种情况下,我将如何将新值传递给函数oauthorise

我花了很多时间在网上搜索,但你可能会说我无法很好地表达我正在努力做的事情,而且我对 PHP 非常生疏,我将不胜感激任何关于我要去哪里的指针/解释错误的!

这是代码

class oauth {

public $objAuthParams;


// Construnct
public function __construct() {
$this->objAuthParams = (object) array(
        "method" => "GET",
        "access_token" => "a token",
        "access_token_secret" => "a secret",
        "consumer_key" => "b consumer",
        "consumer_secret" => "b secret"     
);  

$this->oauthorise();
}


public function oauthorise() {

echo $this->objAuthParams->method; 

}       


} // eoc


// Attempt to set new params for method
$class = new oauth;

$class->objAuthParams->method = "im a hairy badger";
4

1 回答 1

1

您可以将objAuthParams对象传递给构造函数。如果已设置,则将$onjAuthParam变量设置为注入的变量。

<?php

class oauth {

    public $objAuthParams;

    // Construnct
    public function __construct($objAuthParams = false) {
        if(!$objAuthParams)
            $this->objAuthParams = (object) array(
                "method" => "GET",
                "access_token" => "a token",
                "access_token_secret" => "a secret",
                "consumer_key" => "b consumer",
                "consumer_secret" => "b secret"     
            );
        else 
            $this->objAuthParams = $objAuthParams;

        $this->oauthorise();
    }


    public function oauthorise() {
        echo $this->objAuthParams->method; 
    }       


}

$myAuthParams = (object)array(
    "method" => "im a hairy badger",
    "access_token" => "a token",
    "access_token_secret" => "a secret",
    "consumer_key" => "b consumer",
    "consumer_secret" => "b secret"  
);

$class = new oauth($myAuthParams);
print_r($class); 

$class2 = new oauth();
print_r($class2)

这称为依赖注入。-- http://net.tutsplus.com/tutorials/php/dependency-injection-in-php/

于 2013-01-30T14:44:32.513 回答