自分の質問に答えたようですね。get_classクラス名を取得します。それは手続き的であり、それが混乱の原因です。のphpドキュメントを見てくださいget_class
以下がその例です。
<?php
class foo
{
function name()
{
echo "My name is " , get_class($this) , "\n";
}
}
// create an object
$bar = new foo();
// external call
echo "Its name is " , get_class($bar) , "\n"; // It's name is foo
// internal call
$bar->name(); // My name is foo
それをあなたの例のようにするには、次のようにすることができます:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
今あなたはできる:
$className = MyClass::getClass();
ただし、これは多少制限されます。私のクラスが拡張されても、「MyClass」が返されるからです。get_called_class代わりに使用できます。これは、比較的新しい機能であるLate Static Bindingに依存しており、PHP> = 5.3が必要です。
<?php
class MyClass
{
public static function getClass()
{
return get_called_class();
}
public static function getDefiningClass()
{
return get_class();
}
}
class MyExtendedClass extends MyClass {}
$className = MyClass::getClass(); // 'MyClass'
$className = MyExtendedClass::getClass(); // 'MyExtendedClass'
$className = MyExtendedClass::getDefiningClass(); // 'MyClass'