есть проект, который мне нужно расширить. Все классы находятся в отдельных файлах, мне нужно расширить некоторые классы без перезаписи существующего кода в других файлах. Моя идея заключалась в использовании пространств имен, но я терпел неудачу. Вот пример:
Я переименовал оригинальный файл A.php в A_Original.php:
class A
{
public function hello()
{
echo "hello world from Class A\n";
}
}
Затем был создан новый A.php:
namespace AOriginal {
include 'A_Original.php';
}
namespace {
class A
{
public function hello()
{
echo "hello world from Class A Extended\n";
}
}
}
Это не удается, потому что в including
исходном файле A_Original.php класс выгружается в глобальную область (таким образом игнорируя команду пространства имен).
Я не могу изменить существующий код в файле A_Original.php, но переименование в порядке.
В других файлах проекта (которые я не могу изменить) используйте require "A.php"
.
Как это сделать?