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);
→ Ссылка