[英]PHP: Is it possible to call a public class function inside of an exception throw?
我正在嘗試運行此樣例演示,但我一直得到一個純字符串
"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
,但是我寧願使用一個可能的函數,而不是一個非常糟糕的主意。
您正在靜態調用一個不是靜態的函數。 引用$ this可能在構造器內部也有問題,特別是如果它失敗了。
您還應該更改Exception,使其不包含在字符串中。
throw new Exception("Name (".self::getName().") is not supported");
將您的方法更改為靜態訪問。 您還必須將變量$ demo設為靜態:
protected static $name;
public static function getName() {
return self::$name;
}
僅僅為了獲得回聲而拋出異常並沒有太大意義。 您應該只是回顯您的錯誤並退出或引發異常:
public function __construct() {
throw new Exception("Name (".self::getName().") is not supported");
}
要么
public function __construct() {
echo "Name (".self::getName().") is not supported";
exit;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.