iT邦幫忙

0

[PHP] 要如何查詢變數是哪個類別?

在mvc架構下常會看到$this,但因為小弟為新手關係,所以不清楚也想搞清楚$this到底是甚麼類別出來的物件,請問有沒有函數能查詢變數是所屬於甚麼類別嗎?
若只使用gettype($this),只會得到Object這個回應,好像也沒有getclass。

但是有:get_class
wrxue iT邦新手 1 級 ‧ 2020-04-07 15:52:19 檢舉
...原來,感謝你的底線

2 個回答

1
fillano
iT邦超人 1 級 ‧ 2020-04-07 16:46:00
最佳解答

整理一下,三種取得當前類別名稱的方法(假設程式檔名:test.php):

<?php
namespace Main0001 {
    class A {
        function test1() {
            $r = new \ReflectionClass($this);
            echo $r->getName() . "\n";
        }
        function test2() {
            echo get_class($this) . "\n";
        }
        function test3() {
            echo __CLASS__ . "\n";
        }
    }
}

namespace {
    use Main0001\A;
    $a = new A;
    $a->test1();//print: Main0001\A
    $a->test2();//print: Main0001\A
    $a->test3();//print: Main0001\A
}

然後執行php test.php,就會印三次。

大師一出手,便知有沒有
/images/emoticon/emoticon33.gif

1
浩瀚星空
iT邦超人 1 級 ‧ 2020-04-07 15:58:28

$this 你可以將其視為一種魔術變數。
跟$_POST $_GET這些一樣。

基本上來說,$this只會在class才會看到。

依以下例子為例

class test(){
    function get(){
        $this->out();
    }
    function out(){
        echo "OUT!!!";
    }
}
$c = new test();
$c->get(); //會輸出OUT!!!

其中在get內的$this,其實指的就是test這個class
這是物件的一種變數用法。

這只是一種魔術變數。

我要發表回答

立即登入回答