Jump to main content Jump to doc navigation

modX::getService

Примечание: getService перемещен на уровень xPDO

Загружает и возвращает экземпляр именованного класса обслуживания. Возвращает ссылку на экземпляр класса обслуживания или значение null, если он не может быть загружен. Вы можете подумать, что это простая инъекция зависимости.

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

Синтаксис

API Doc: modX::getService()

object getService (string $name, [string $class = ''], [string $path = ''], [array $params = array ()])
  • $name (string) ключ, который однозначно идентифицирует службу.
  • $class (string) полное имя класса, совместимого с оператором "new", ИЛИ вы можете использовать "точечную нотацию" для указания вложенных папок относительно $path.
  • $path (string) полный путь к каталогу, содержащему рассматриваемый класс.
  • $params (array) передается в качестве второго аргумента в конструктор. Первый аргумент всегда является ссылкой на xPDO/MODX.

Примеры

Получение сервиса modSmarty.

$modx->getService('smarty','smarty.modSmarty');

Получить пользовательский, определенный пользователем сервис под названием 'modTwitter' из пользовательского пути ('/path/to/modtwitter.class.php'), и передать некоторые пользовательские параметры.

$modx->getService('twitter','modTwitter','/path/to/',array(
  'api_key' => 3212423,
));
$modx->twitter->tweet('Успех!');

Еще один пример использования getService внутри пользовательского Extra:

// Используйте путь, чтобы указать непосредственно на соответствующий вложенный каталог:
if(!$Product = $this->modx->getService('mypkg.product','Product',MODX_CORE_PATH.'components/mypkg/model/mypkg/')) {
    return 'НЕ НАЙДЕН';
}
// Или используйте точечную нотацию в имени класса и укажите $path на каталог модели:
if(!$Product = $this->modx->getService('mypkg.product','mypkg.Product',MODX_CORE_PATH.'components/mypkg/model/')) {
    return 'НЕ НАЙДЕН';
}

У getService могут возникнуть проблемы с пространствами имен PHP.

Смотрите также

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • Fabian Christen
  • Dannevang Digital
  • Sepia River Studios
  • CrewMark
  • Chris Fickling
  • deJaya
  • Lefthandmedia
  • Murray Wood
  • eydolan
  • Following Sea
  • Anton Tarasov
  • Stéphane Jäggi
  • Raffy
  • Snow Creative
  • A. Moreno
  • Nick Clark
  • JT Skaggs
  • Helen
  • YJ
  • krisznet
  • Richard
  • Yanni

Budget

$301 per month—let's make that $500!

Learn more