本文整理匯總了PHP中TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findService方法的典型用法代碼示例。如果您正苦於以下問題:PHP ExtensionManagementUtility::findService方法的具體用法?PHP ExtensionManagementUtility::findService怎麽用?PHP ExtensionManagementUtility::findService使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類TYPO3\CMS\Core\Utility\ExtensionManagementUtility
的用法示例。
在下文中一共展示了ExtensionManagementUtility::findService方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: makeInstanceService
/**
* Find the best service and check if it works.
* Returns object of the service class.
*
* @param string $serviceType Type of service (service key).
* @param string $serviceSubType Sub type like file extensions or similar. Defined by the service.
* @param mixed $excludeServiceKeys List of service keys which should be excluded in the search for a service. Array or comma list.
* @return object The service object or an array with error info's.
*/
public static function makeInstanceService($serviceType, $serviceSubType = '', $excludeServiceKeys = array())
{
$error = FALSE;
if (!is_array($excludeServiceKeys)) {
$excludeServiceKeys = self::trimExplode(',', $excludeServiceKeys, TRUE);
}
$requestInfo = array('requestedServiceType' => $serviceType, 'requestedServiceSubType' => $serviceSubType, 'requestedExcludeServiceKeys' => $excludeServiceKeys);
while ($info = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findService($serviceType, $serviceSubType, $excludeServiceKeys)) {
// provide information about requested service to service object
$info = array_merge($info, $requestInfo);
// Check persistent object and if found, call directly and exit.
if (is_object($GLOBALS['T3_VAR']['makeInstanceService'][$info['className']])) {
// update request info in persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->info = $info;
// reset service and return object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->reset();
return $GLOBALS['T3_VAR']['makeInstanceService'][$info['className']];
} else {
if (isset($info['classFile'])) {
// @deprecated since 6.1, will be removed in TYPO3 CMS 6.3
// Option is deprecated, since we now have the autoloader function
self::deprecationLog('The option "classFile" of "' . $info['className'] . '" in T3_SERVICES has been deprecated, as this should now be done by the respective ' . 'ext_autoload.php of each extension. This option will be removed in TYPO3 CMS v6.3.');
$requireFile = self::getFileAbsFileName($info['classFile']);
if (@is_file($requireFile)) {
self::requireOnce($requireFile);
}
}
$obj = self::makeInstance($info['className']);
if (is_object($obj)) {
if (!@is_callable(array($obj, 'init'))) {
// use silent logging??? I don't think so.
die('Broken service:' . \TYPO3\CMS\Core\Utility\DebugUtility::viewArray($info));
}
$obj->info = $info;
// service available?
if ($obj->init()) {
// create persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']] = $obj;
return $obj;
}
$error = $obj->getLastErrorArray();
unset($obj);
}
}
// deactivate the service
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::deactivateService($info['serviceType'], $info['serviceKey']);
}
return $error;
}
示例2: makeInstanceService
/**
* Find the best service and check if it works.
* Returns object of the service class.
*
* @param string $serviceType Type of service (service key).
* @param string $serviceSubType Sub type like file extensions or similar. Defined by the service.
* @param mixed $excludeServiceKeys List of service keys which should be excluded in the search for a service. Array or comma list.
* @return object|string[] The service object or an array with error infos.
*/
public static function makeInstanceService($serviceType, $serviceSubType = '', $excludeServiceKeys = [])
{
$error = false;
if (!is_array($excludeServiceKeys)) {
$excludeServiceKeys = self::trimExplode(',', $excludeServiceKeys, true);
}
$requestInfo = ['requestedServiceType' => $serviceType, 'requestedServiceSubType' => $serviceSubType, 'requestedExcludeServiceKeys' => $excludeServiceKeys];
while ($info = ExtensionManagementUtility::findService($serviceType, $serviceSubType, $excludeServiceKeys)) {
// provide information about requested service to service object
$info = array_merge($info, $requestInfo);
// Check persistent object and if found, call directly and exit.
if (is_object($GLOBALS['T3_VAR']['makeInstanceService'][$info['className']])) {
// update request info in persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->info = $info;
// reset service and return object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->reset();
return $GLOBALS['T3_VAR']['makeInstanceService'][$info['className']];
} else {
$obj = self::makeInstance($info['className']);
if (is_object($obj)) {
if (!@is_callable([$obj, 'init'])) {
// use silent logging??? I don't think so.
die('Broken service:' . DebugUtility::viewArray($info));
}
$obj->info = $info;
// service available?
if ($obj->init()) {
// create persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']] = $obj;
return $obj;
}
$error = $obj->getLastErrorArray();
unset($obj);
}
}
// deactivate the service
ExtensionManagementUtility::deactivateService($info['serviceType'], $info['serviceKey']);
}
return $error;
}
示例3: makeInstanceService
/**
* Find the best service and check if it works.
* Returns object of the service class.
*
* @param string $serviceType Type of service (service key).
* @param string $serviceSubType Sub type like file extensions or similar. Defined by the service.
* @param mixed $excludeServiceKeys List of service keys which should be excluded in the search for a service. Array or comma list.
* @return object The service object or an array with error info's.
*/
public static function makeInstanceService($serviceType, $serviceSubType = '', $excludeServiceKeys = array())
{
$error = FALSE;
if (!is_array($excludeServiceKeys)) {
$excludeServiceKeys = self::trimExplode(',', $excludeServiceKeys, 1);
}
$requestInfo = array('requestedServiceType' => $serviceType, 'requestedServiceSubType' => $serviceSubType, 'requestedExcludeServiceKeys' => $excludeServiceKeys);
while ($info = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findService($serviceType, $serviceSubType, $excludeServiceKeys)) {
// provide information about requested service to service object
$info = array_merge($info, $requestInfo);
// Check persistent object and if found, call directly and exit.
if (is_object($GLOBALS['T3_VAR']['makeInstanceService'][$info['className']])) {
// update request info in persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->info = $info;
// reset service and return object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']]->reset();
return $GLOBALS['T3_VAR']['makeInstanceService'][$info['className']];
} else {
$requireFile = self::getFileAbsFileName($info['classFile']);
if (@is_file($requireFile)) {
self::requireOnce($requireFile);
$obj = self::makeInstance($info['className']);
if (is_object($obj)) {
if (!@is_callable(array($obj, 'init'))) {
// use silent logging??? I don't think so.
die('Broken service:' . \TYPO3\CMS\Core\Utility\DebugUtility::viewArray($info));
}
$obj->info = $info;
// service available?
if ($obj->init()) {
// create persistent object
$GLOBALS['T3_VAR']['makeInstanceService'][$info['className']] = $obj;
// needed to delete temp files
register_shutdown_function(array(&$obj, '__destruct'));
return $obj;
}
$error = $obj->getLastErrorArray();
unset($obj);
}
}
}
// deactivate the service
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::deactivateService($info['serviceType'], $info['serviceKey']);
}
return $error;
}
示例4: getExitpointByIdentifier
/**
* @param string $identifier
* @return bool|tx_caretaker_NotificationExitPointInterface
*/
protected function getExitpointByIdentifier($identifier)
{
if ($this->exitpoints[$identifier] !== NULL) {
return $this->exitpoints[$identifier];
}
$exitpoint = FALSE;
list($exitpointRecord) = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', tx_caretaker_Constants::table_Exitponts, 'id = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($identifier, '') . ' AND deleted=0 AND hidden=0', '', '', 1);
if ($exitpointRecord === NULL) {
return false;
}
$info = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findService('caretaker_exitpoint', $exitpointRecord['service']);
if (is_array($info) && !empty($info['className'])) {
$exitpoint = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance($info['className']);
$config = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($exitpointRecord['config']);
if (!is_array($config)) {
$config = array();
}
$exitpoint->init($config);
}
$this->exitpoints[$identifier] = $exitpoint;
return $exitpoint;
}
示例5: getTestService
/**
* @return tx_caretaker_TestServiceInterface
* @throws Exception
*/
public function getTestService()
{
if ($this->testService === NULL) {
if ($this->testServiceType) {
$info = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findService('caretaker_test_service', $this->testServiceType);
if ($info && $info['className']) {
if (class_exists($info['className'])) {
$this->testService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance($info['className']);
if ($this->testService) {
$this->testService->setInstance($this->getInstance());
$this->testService->setConfiguration($this->testServiceConfiguration);
} else {
throw new Exception('testservice class ' . $info['className'] . ' could not be instantiated');
}
} else {
throw new Exception('testservice ' . $this->testServiceType . ' class ' . $info['className'] . ' not found');
}
} else {
throw new Exception('caretaker testservice ' . $this->testServiceType . ' not found');
}
}
}
return $this->testService;
}