PHP-我如何定义“PHP”;“静态”;类中的变量

PHP-我如何定义“PHP”;“静态”;类中的变量,php,class,Php,Class,我试图在类中调用一些“全局/静态”变量($agent,$version),但我不知道如何将它们插入类本身。基本上我声明了类“$myclass=newmyclass($agent,$version),但我不知道如何在类内调用这些变量(例如,在getProducts函数中使用它们)。我知道这些问题听起来很愚蠢,但我就是不明白 index.php: $myclass = new myClass($agent, $version); $agent = "firefox"; $version = "23

我试图在类中调用一些“全局/静态”变量($agent,$version),但我不知道如何将它们插入类本身。基本上我声明了类“$myclass=newmyclass($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
    }

}

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

我想您不是指“静态”变量,而是指“属性”:

用法:

$agent = "firefox";
$version = "234";
$instance = new myClass($agent, $version);
$catalog = $instance->getProducts("http://amazon.com", "red");

您可以使用static关键字声明它们

发件人:

这也是错误的:

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

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

您应该首先声明类
类myClass
。然后初始化
$agent
$version
。只有在这之后,您才能实例化它
新的myClass($agent,$version)
。但是你做了相反的事情!你为什么要使用静态变量?为类创建一个构造函数并声明/初始化类的变量:听起来不错,但是怎么做呢?顺便说一句,我只是想完成这项工作,而不是真正做任何最先进的项目。你是在做应用程序还是学校项目?如果是后者,你不应该自己做吗,和学习?;)尽管如此,你不应该把你的工作外包。我为自己做一些工作,这意味着我正在尝试自动化一些任务(php卷曲、scaping等).我不明白为什么将参数传递到类中如此复杂。请阅读Niko的答案,或者直接这样传递:$instance=new myClass(“Firefox”,“1234”);我认为在这种情况下使用静态类变量没有任何意义。在此之前,您自然会在类内声明/初始化变量。我不需要$my_static='foo';我需要在新类上声明的变量(例如$myclass=new foo($a,$b,$c).我需要类本身内部的$a、$b、$c。我怎么做?但是如果你在做OOP,你需要在类内部使用它们。你需要总是首先初始化变量!好的,那么不可能得到类之外的变量吗?我的意思是,在初始化时不可能将它传递给类本身?我不知道为什么我不理解还有你的答案,但不理解PHP文档,它提供了一个类似的例子
class Foo
{
    public static $my_static = 'foo';

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

print Foo::$my_static . "\n";
function getProducts ($url, $color){
  $product = $this->getXML($agent, $version);
  $catalog =  str_replace("asus", "", $product);
  return $catalog
}