4

クラスをパラメーターとして渡す関数があります。渡されたクラスのクラス名を文字列として取得したいのですが。

渡されたクラスにこのメソッドを入れてみました:

function getClassName()
    {
        return __CLASS__;
    }

しかし、クラスが拡張された場合、これはサブクラスの名前を返すと思いましたが、それでも私が奇妙だと思うスーパークラスの名前を返します。

したがって、$ varがパラメーターとして関数に渡された場合、クラス名の文字列を取得する方法はありますか?

ありがとう!!

4

6 に答える 6

12

get_classを参照してください。これはまさにあなたが達成しようとしているものです。

$class_name = get_class($object);
于 2010-02-15T15:29:43.487 に答える
11

名前空間なしでクラス名を取得する最も簡単な方法は次のとおりです。

$class = explode('\\', get_called_class());
echo end($class);

またはpreg_replaceを使用

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
于 2011-11-30T10:02:32.697 に答える
1

__ CLASS __ メソッドが実装されているクラスの名前を返します。

渡されたオブジェクトのクラス名を取得したい場合は、次を使用できます。

get_class($param);

また、PHP5 を使用している場合は、提供されている Reflection クラスも役立ちます。

于 2010-02-15T15:30:02.820 に答える
0

渡されたクラスにメソッドを追加して、これを返すこともできます。

var_dump(get_called_class());

于 2010-02-15T16:18:46.423 に答える
0

get_classを使用します。

$className = get_class($object);
于 2010-02-15T15:30:42.707 に答える
0

PHPドキュメントから直接: http://uk.php.net/manual/en/function.get-class.php

<?php

abstract class bar {
    public function __construct()
    {
        var_dump(get_class($this));
        var_dump(get_class());
    }
}

class foo extends bar {
}

new foo;

?>

The above example will output:

string(3) "foo"
string(3) "bar"
于 2010-02-15T15:31:11.550 に答える