Создать псевдоним класса пространства имен для класса без пространства имен - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в PHP 5.6+, пытаюсь наверстать упущенное, хочу создать слой совместимости для приложения, рассмотрим следующий сценарий

// classA.php, a non spaced class
class A {
  // ONLY fallback const + methods / work as just an alias for B (below)
}

// classAchild.php, a child non spaced class
class Achild extends A {
  // ONLY fallback const + methods / work as just an alias for Bclass (below)
}

// B.php, a spaced class
namespace Abstract\Context;
class B {
  // ALL const + methods
}

// Bchild.php, a child non spaced class
namespace Abstract\Context\B\Subcontext;
class Bchild extends B {
  // ALL const + methods
}

Класс A является версией PHP 4+ класса B, который является PHP 7+, функционально эти классы и их дочерние классы эквивалентны, однако в разных контекстах.

Позвольте мне объяснить:

  • Сейчас я нахожусь в ситуации, когда мне нужно создать псевдоним в пространстве имен для Bchild на основе существующего Achild.
  • При работе в контексте, где пространство имен всех классов (последняя версия приложения), B всегда используется, но при работе в более старом приложении всегда присутствует Bchild, чтобы заполнить содержимое для Achild или иногда исправления это.

Примерно так:

if ( !class_exists('Abstract\Context\B\Subcontext\Bchild') ){
  if ( !class_exists('Abstract\Context\B') ){
    class 'Abstract\Context\B' extends A{} // define an alias for B with existing A
  }
  class 'Abstract\Context\B\Subcontext\Bchild' extends Achild{} // define an alias for Bclass with existing Achild
}

Если вы знаете, как это сделать, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...