1

クラス内でいくつかの「グローバル/静的」変数 ($agent、$version)を呼び出そうとしていますが、それらをクラス自体に挿入する方法がわかりません。基本的に、クラス "$myclass = new myClass($agent, $version)" を宣言しますが、これらの変数をクラス内で呼び出す方法がわかりません (たとえば、getProducts 関数で使用します)。質問がばかげているように聞こえることはわかっていますが、ただそれを取得しないでください。

index.php :

$myclass = new myClass($agent, $version);

$agent = "firefox";
$version = "234";

$catalog = $myClass->$getProducts("http://amazon.com", "red");

myclass.class.php :

class myClass {
    function getXML ($agent, $version) {
        //do something 
        return $
    }

    function getProducts ($url, $color) {
        $product = $this->getXML($agent, $version);
        $catalog =  str_replace("asus", "", $product);
        return $catalog
    }

}
4

4 に答える 4

1

静的変数はあなたが探しているものではないように聞こえますが、何をしているのかわからない限り避けるのが最善です (それらは実際にはオブジェクト指向ではなく、PHP 5.3 以降ではまったく必要ありません)。あなたが提供したコードから、引数をオブジェクトのインスタンス化 ( new) に渡すことを期待しているように見えるので、引数を受け入れ、それらをメソッドで使用されるインスタンス変数に割り当てるクラスのコンストラクターを作成する必要があります。

于 2013-01-19T19:04:03.190 に答える
1

static キーワードを使用して宣言できます。

http://php.net/manual/en/language.oop5.static.phpから:

class Foo
{
    public static $my_static = 'foo';

    public function staticValue() {
        return self::$my_static;
    }
}

print Foo::$my_static . "\n";
于 2013-01-19T19:05:36.703 に答える
0

「静的」変数ではなく「プロパティ」を意味していると思います。

class myClass {
    // Declare the properties
    private $agent, $version;

    public function __construct($agent, $version) {
        // Copy the arguments to the class members
        $this->agent = $agent;
        $this->version = $version;
    }

    public function getProducts($url, $color) {
        $product = $this->getXML();
        // ...
    }

    private function getXML() {
        // Use the values stored in $this->agent etc.
        $agent = $this->agent;
        // ...
    }
}

使用法:

$agent = "firefox";
$version = "234";
$instance = new myClass($agent, $version);
$catalog = $instance->getProducts("http://amazon.com", "red");
于 2013-01-19T19:04:13.893 に答える
0

これも間違っています:

function getProducts ($url, $color){
  $product = $this->getXML($agent, $version);
  $catalog =  str_replace("asus", "", $product);
  return $catalog
}

$agent 変数と $version 変数を getXML メソッドに渡すことはできません。ただし、それらを最初に作成するか、getProducts メソッドに渡す必要があります。

于 2013-01-19T19:11:32.543 に答える