Я часто когда писал под MODX задумывался что из этого мне надо и для чего. Тоесть сам вопрос где и как их использовать.
Есть метод $modx->addExtensionPackage($class, $path) но минус этого метода в том что он добавляет в автоматическую загрузку и когда таких классов много это нагружает сайт.
И так поехали где правда?
Эти методы загружают класс то есть это замена include и require. Первый плюс в том что в случае ошибки мы получим сообщение в MODX error log. Второй плюс в том что если класс уже загружен то ошибки не будет и не надо писать типа if (! class_exists('classname')) {}.
loadClass()
public function loadClass($fqn, $path= '', $ignorePkg= false, $transient= false)
Используем в случае если надо загрузить класс который не использует базу данных
$path = MODX_CORE_PATH . 'components/mycomponent/model/';
$modx->loadClass('myclass.MyClass', $path, true, true);
Последний аргумент true соббщает MODX что наш класс не использует базу данных.
addPackage()
public function addPackage($pkg= '', $path= '', $prefix= null)
Используем если наш класс использует базу данных и имеет сгенерированые map фаилы.
$myclassModelPath = MODX_CORE_PATH . 'components/myclass/model/';
$modx->addPackage('Myclass',$myclassnModelPath , '');
Позволяет нам теперь пользоваться классом например написав так:
$modx->getObject('Myclass');
getService()
public function &getService($name, $class= '', $path= '', $params= array ())
Предзназначен для того чтоб мы легко могли пользоваться функциями класса через альяс:
$myclassModelPath = MODX_CORE_PATH . 'components/myclass/model/';
$modx->getService('myclassAlias', 'myclass.Myclass', $myclassModelPath);
//теперь можем использовать альяс для доступа к функциям
$modx->myclassAlias->myClassFunction();
Надеюсь вы нашли ответ на этот вопрос для себя раз и навсегда?