PHP - 如何在类中定义“静态”变量

时间:2013-01-19 18:56:36

标签: php class

我正在尝试在类中调用一些“global / static”变量($ 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 个答案:

答案 0 :(得分:1)

这听起来不像你正在寻找的静态变量,除非你知道你在做什么(它们不是真正的面向对象而且在PHP 5.3+中根本不需要),所以最好避免使用它们。从您提供的代码看起来您​​希望将参数传递给对象实例化(new),因此您应该为接受参数的类创建一个构造函数,并将它们分配给实例变量在方法中使用。

答案 1 :(得分: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";

答案 2 :(得分: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");

答案 3 :(得分:0)

这也是错误的:

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

你不能在getXML方法中传递$ agent和$ version变量,除非你没有,首先构造它们,或者在你的getProducts方法中传递它们。