为什么这个php函数调用失败了?
我正在尝试使用以下PHP类:为什么这个php函数调用失败了?,php,Php,我正在尝试使用以下PHP类: <?php class Service { public $code, $description; public static $services = array( "A" => "Shipping", "B" => "Manufacturing", "C" => "Legal", "D
<?php
class Service {
public $code, $description;
public static $services = array(
"A" => "Shipping",
"B" => "Manufacturing",
"C" => "Legal",
"D" => "Accounts Receivable",
"E" => "Human Resources",
"F" => "Security",
"G" => "Executive",
"H" => "IT"
);
public function _construct( $c, $d) {
$this->code = $c;
$this->description = $d;
}
public static function getDescription( $c ){
return $services[$c];
}
public static function generateServiceList() {
$service_list[] = array();
foreach ($services as $k => $v ){
$service_list[] = new Service( $k, $v );
}
return $service_list;
}
}
?>
知道为什么吗?这是某种访问问题吗?谢谢。$services变量在函数外部声明。使用类时,必须使用$this关键字访问它,如下所示:
...
foreach ($this->services as $k => $v ){
...
稍后编辑:对于静态变量,请使用self::$services而不是$this->services。$services未定义。你的意思是自我:$services吗
到
您希望引用类的$services,而不是函数的本地$services。我现在无法测试它,但我的直觉是移动$service并没有被实例化。在这种情况下,我倾向于使用init变量的方法。在这种情况下,您可以创建另一个方法
$services = array(
"A" => "Shipping",
"B" => "Manufacturing",
"C" => "Legal",
"D" => "Accounts Receivable",
"E" => "Human Resources",
"F" => "Security",
"G" => "Executive",
"H" => "IT"
实例化 否-generateServiceList函数和数组都是静态的。是。如果某个对象是静态的,则它不绑定到对象引用。这意味着没有$this->services,而是一个服务::$services数组。正确答案是RiaD的答案。否-generateServiceList函数和数组都是静态的。
...
foreach ($this->services as $k => $v ){
...
foreach ($services as $k => $v ){
$service_list[] = new Service( $k, $v );
}
foreach ($this->services as $k => $v ){
$service_list[] = new Service( $k, $v );
}
$services = array(
"A" => "Shipping",
"B" => "Manufacturing",
"C" => "Legal",
"D" => "Accounts Receivable",
"E" => "Human Resources",
"F" => "Security",
"G" => "Executive",
"H" => "IT"