Я знаю, что на PHP 5.5 есть статическое поле class
, но я должен придерживаться PHP 5.4. Можно ли получить полное имя класса из переменной?
Пример:
namespace My\Awesome\Namespace class Foo { }
И еще где-то в коде:
public function bar() { $var = new \My\Awesome\Namespace\Foo(); // maybe there's something like this?? $fullClassName = get_qualified_classname($var); // outputs 'My\Awesome\Namespace\Foo' echo $fullClassName }
Вы должны использовать get_class
Если вы используете пространства имен, эта функция вернет имя класса, включая пространство имен, поэтому следите за тем, выполняет ли ваш код какие-либо проверки для этого.
namespace Shop; <?php class Foo { public function __construct() { echo "Foo"; } } //Different file include('inc/Shop.class.php'); $test = new Shop\Foo(); echo get_class($test);//returns Shop\Foo
вnamespace Shop; <?php class Foo { public function __construct() { echo "Foo"; } } //Different file include('inc/Shop.class.php'); $test = new Shop\Foo(); echo get_class($test);//returns Shop\Foo
Это пример прямой копии.
Я знаю, что это старый вопрос, но для людей, которые все еще находят это, я бы предложил такой подход:
namespace Foo; class Bar { public static function fqcn() { return __CLASS__; } } // Usage: use Foo\Bar; // ... Bar::fqcn(); // Return a string of Foo\Bar
Если вы используете PHP 5.5, вы можете просто сделать это:
namespace Foo; class Bar {} // Usage: use Foo\Bar; // ... Bar::class; // Return a string of Foo\Bar
Надеюсь это поможет…
Больше информации о :: классе здесь .