spl_autoload_register - prepend или append?

AnrDaemon

Продвинутый новичок
Загрузчик активируется как-то так:
PHP:
function ldbwrapper_autoload($name)
{
  fwrite(STDERR, "$name\n");
  if(stripos($name, 'Ldb') === 0)
  {
    $_f = __DIR__ . "/Ldb/{$name}.php";
    fwrite(STDERR, "$_f\n");
    $result = include $_f;
//    $result = include __DIR__ . "/Ldb/{$name}.php";
  }
}

if(spl_autoload_functions() === false)
  spl_autoload_register();

spl_autoload_register('ldbwrapper_autoload');
Т.е. сначала выполняется дефолтный spl_autoload() потом кастомный.

Есть два класса:
PHP:
abstract class LdbWrapper{};
PHP:
class LdbActor extends LdbWrapper{};
Ситуация:
При создании actor(), на case-sensitive FS, загрузчик выполянется дважды. Если FS case-insensitive, загрузчик выполняется один раз, а абстрактный класс, видимо, подхватывается стандартным из-за смены текущего каталога.

Сижу, чешу затылок.
Менять порядок загрузки на prepend вроде смысла большого нет. Работает как надо… пока. Но потенциально, это опасная штука, так как вносит неоднозначность в поиск классов для загрузки.

Какие мнения у сообщества?
 

Вурдалак

Продвинутый новичок
Какие-то знакомые функции. По-моему, ими когда-то пользовались напрямую, до появления Composer'а.
 

AnrDaemon

Продвинутый новичок
@Вурдалак, спасибо, я в курсе, что ты кроме веб-разработки ничего не знаешь.
По существу есть что добавить?
 

Вурдалак

Продвинутый новичок
Так ты спроси нормально, высер же какой-то. Как будто ты сам с собой разговариваешь.
 

fixxxer

К.О.
Партнер клуба
Непонятно, в чем вопрос. Про флаг prepend ты, судя по вопросу, знаешь. Ну так используй, если оно тебе надо.
 

AnrDaemon

Продвинутый новичок
Вопрос на самом деле дурацкий. :/
Имена классов достаточно уникальны, чтобы не возникало коллизий в разработке, подменить стандартный класс не получится - они уже объявлены до вызова автозагрузки.
Чтобы сделать что-то действительно опасное, надо очень сильно постараться.
Можно закрывать. Туплю.
 
Сверху