PHP define class with namespace
namespace A\B\C\D\E\F\G;
class H {
public static function i($a) {
return $a * 2;
}
}
print_r(A\B\C\D\E\F\G\H::get());
Как заменить во всех областях видимости и пространствах имен A\B\C\D\E\F\G\H на просто Н? Чтобы вызывать отовсюду
print_r(H::get());
Так не работает:
define("H", "A\B\C\D\E\F\G\H");
H::get(2);
Ответы (2 шт):
Автор решения: lezhni
→ Ссылка
Укажите явно, что вы хотите использовать класс из нужного пространства:
use A\B\C\D\E\F\G\H;
H::get(2);
Автор решения: teran
→ Ссылка
Если понимаете, что вы по сути делаете костыль, но все равно хотите его создать, то пишите
(H)::get(2)
в противном случае ищется класс H а не константа H. При этом, если делать сие в одном файле, то будет работать.
<?php
namespace A\B\C\D\E\F\G;
define('H', H::class);
class H {
public static function get(int $id){
echo $id;
}
}
и вызывающий
<?php
require_once "h.class.php";
(H)::get(2);