簡體   English   中英

PHP:是否可以在引發異常時調用公共類函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM