我正试图让这个小型演示运行,但我一直得到一个简单的字符串
"getConfiguration:Name (self::getName())is not supported"
(使用self :: getName()时)
或错误信息:
PHP Notice: Undefined property: Demo::$getName
(使用$ this-> getName()时)
这是我的代码:
class Demo {
protected $name = "demo";
public function __construct() {
try {
if(true) {
throw new Exception("Name (self::getName())" .
"is not supported");
}
} catch(Exception $e){
echo $e->getMessage(); exit;
}
}
public function getName() {
return $this->demo;
}
}
现在这根本不可能,或者我在这里做错了什么?!
编辑:
在此之前,我使用$this->name
进行了这项工作,但如果有可能,我宁愿使用一个函数,而不是一个非常糟糕的想法。
答案 0 :(得分:1)
您正在静态调用一个非静态函数。引用$ this在构造函数中也可能存在问题,特别是如果它失败了。
您还应该将您的异常更改为不包含字符串内的调用。
throw new Exception("Name (".self::getName().") is not supported");
将您的方法更改为静态访问。您还必须使变量$ demo static:
protected static $name;
public static function getName() {
return self::$name;
}
抛出异常只是为了获得回声并没有多大意义。您应该只是回显错误并退出或抛出异常:
public function __construct() {
throw new Exception("Name (".self::getName().") is not supported");
}
OR
public function __construct() {
echo "Name (".self::getName().") is not supported";
exit;
}