Я просто возился, и я сталкивался с этим:
Не работает
<?php namespace first{ include 'data:text/plain, <?php function a_func(){echo "hi";}'; a_func(); } namespace second{ include 'data:text/plain, <?php function a_func(){echo "bye";}'; a_func(); } 
[29-апр-2016 14:12:42 America / New_York] PHP Неустранимая ошибка: не удается обновить a_func () (ранее объявлено в данных: text / plain, <? Php function a_func () {echo "hi";}: 1 ) в данных: text / plain, <? php function a_func () {echo "bye";} в строке 1
Не работает
 <?php namespace first{ eval('function a_func(){echo "hi";}'); a_func(); } namespace second{ eval('function a_func(){echo "bye";}'); a_func(); } 
[29-апр-2016 14:19:21 America / New_York] PHP Неустранимая ошибка: не удается обновить a_func () (ранее объявлено в C: \ path \ test.php (3): eval () 'd code: 1) в C: \ path \ test.php (7): код eval () 'в строке 1
Работает
 <?php namespace first{ function a_func(){echo "hi";} a_func(); } namespace second{ function a_func(){echo "bye";} a_func(); } 
Протестировано в PHP 5.6.20 и 7.0.5
Это ошибка? Особенность? Целенаправленно реализован?
  Дополнительный кредит: Как сделать работу include() или eval() ? 
  include и eval заставляют компилятор обрабатывать свой вход, как если бы он поступал из отдельного файла в обоих случаях. 
  Это означает, что ваши объявления пространства имен в установочном коде не передаются в код, входящий в include / eval , а функции, которые определены там, определены в глобальном пространстве имен.  Вы можете легко проверить это с помощью 
 <?php namespace outer; eval('function func(){}'); var_dump(function_exists('\outer\func')); // false var_dump(function_exists('\func')); // true 
Чтобы получить ожидаемое поведение, вы должны включить объявления пространства имен в код, который вытягиваете:
 <?php namespace first{ include 'data:text/plain,<?php namespace first; function a_func(){echo "hi";}'; a_func(); } namespace second{ include 'data:text/plain,<?php namespace second; function a_func(){echo "bye";}'; a_func(); } 
а также
 <?php namespace first{ eval('namespace first; function a_func(){echo "hi";}'); a_func(); } namespace second{ eval('namespace second; function a_func(){echo "bye";}'); a_func(); }