我正在尝试在类中调用一些“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
}
}
答案 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方法中传递它们。