Загрузка библиотеки из определенной папки

У меня есть несколько расширений, которые используют один и тот же класс библиотеки. Библиотека поставляется в комплекте с каждым расширением и, конечно же, не всегда актуальна. Код прост:

class Library { function1 (){ ... } function2 (){ ... } } 

Допустим, у нас есть 2 расширения: у одной есть более старая версия библиотеки, одна – более новая. В новой библиотеке вводятся новые функции (function3 () и function4 ()). Задача проста: мне нужно загрузить класс библиотеки из определенной папки, чтобы иметь возможность использовать новые функции. По умолчанию, когда оба расширения активны на одной и той же странице, он загружает класс библиотеки из расширения, который идет первым.

Кажется, я не могу найти лучшее решение для этого. Я знаю об пространствах имен (но никогда не использовал их раньше), но они требуют изменений в библиотечных файлах. Мне нужно иметь «namespace ExtensionName»; в начале library.php.

Есть ли способ избежать каких-либо дополнительных изменений в библиотечных файлах?

Было бы неплохо просто загрузить кучу функций из определенного файла, упаковать их в некоторый динамически названный класс и затем инициализировать его.

ОБНОВИТЬ

Просто чтобы прояснить все это. Скажем, у меня есть два расширения:

Расширение 1 Расширение 2

Обе из них имеют «системную» папку с двумя системными классами:

 class SystemClassHelper { function addStuff() { ... } } 

а также

 SystemClassModel { function getStuff() { ... } } 

Единственное отличие состоит в том, что Extension 2 имеет более новые версии системных классов с дополнительными функциями:

 function addMoreStuff() { ... } 

а также

 function getMoreStuff() { ... } 

Оба расширения широко используют эти системные классы и могут выполняться одновременно. Это означает, что они оба будут использовать системные классы из расширения, которое было выполнено в первую очередь. Но если сначала выполняется Extension 1, Extension 2 вызовет ошибку при вызове новых функций (нет новых функций в Extension 1, помните?).

Задача проста: мне нужно загружать системные классы для каждого расширения специально, чтобы иметь возможность использовать новые функции там, где это необходимо, и я хочу, чтобы это было сделано без добавления пространств имен. И, конечно же, без ошибки «не могу переопределить класс».

Пока я просто использую это в начале каждого системного класса:

 namespace Extension1 

а также

 namespace Extension2 

Это работает, но требует, чтобы вы постоянно вносили изменения в системные классы и добавляли пространство имен. Я хочу просто скопировать папку «system» в другое расширение и загрузить классы непосредственно из этой папки.