Использование пространств имен PHP во включенных файлах - PullRequest
3 голосов
/ 24 июня 2019

Я пытаюсь использовать пространства имен с включенными файлами:

<?php
  namespace MyNamespace;

  function foo() {
    echo 'Test';
  }

  include( 'otherfile.php' );
?>

Внутри otherfile.php - это <?php foo(); ?>;, и я бы тоже хотел увидеть "Test" как вывод.

Есть ли шанс реализовать это, не изменяя этот другой файл?

Мое желание: я хотел бы заменить существующий файл внутрикод внешней библиотеки.Я не хочу изменять этот код, так как ожидаю дальнейших обновлений там.

1 Ответ

0 голосов
/ 24 июня 2019

Нет, это невозможно. Вы определяете функцию MyNamespace\foo. Включенный файл вызывает функцию foo. Нет способа изменить значение того, на что ссылается foo(), без изменения кода в этом файле. Если вы хотите заменить функцию foo, ваша единственная надежда состоит в том, чтобы определить свой собственный function foo (без пространства имен) и избежать загрузки другой реализации этой функции. Если нет, то это такие вещи, как runkit, к которым вы не хотите прибегать.

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