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 に答える