HomeBack home

S5
Search for a specific service

$Date$

 Table of contents

  Introduction

To know if a service is already registered, you may use hasMethod. And to get the application code of a specific method, you should use getHandler.

[Top]

  Synopsis

$registry = &Registry::singleton();
$app = 'sw4p';
$registry->registerApplication($app]);
$registry->registerService($app, 'textdomain/set', 'functions.php', 'initTextDomain', 
                           array('language','domain','translationsDir')
                           );
...
$method = 'message/get';
$srv = $registry->hasMethod($method, [$handler = null]);
...
$method = 'textdomain/set';
$srv = $registry->hasMethod($method, $app);

[Top]

  Parameters

string    $method        The full name of the method to check for
string    $handler       (optional) Identify a specific handler

[Top]

  Output

boolean                  Whether or not the method is registered

[Top]

  Play example


<?php
/**
 * Example S5 for Config_Registry : search for hook
 * 
 * @version    0.1
 * @author     Laurent Laville <pear@laurent-laville.org>
 * @access     public
 * @package    Config_Registry
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
 *
 * $Id$
 */
 
require_once 'Config/Registry.php';
require_once '../handleError.php';

print "<h1>Search for hook </h1>";

$registry =& Config_Registry::singleton();
$app = 'gettext';

$reg = $registry->registerApplication($app, 'php-gettext plugin', realpath('.'));
handleError($reg);

$args = array('language','domain','translationsDir');
$srv = $registry->registerService($app, 'textdomain/set', 'functions.php', 'initTextDomain', $args);
handleError($srv);

$args = array('stringID');
$srv = $registry->registerService($app, 'message/get', 'functions.php', 'getMessage', $args);
handleError($srv);

$reg = $registry->registerApplication('sw4p', 'Setup Wizard for PHP', realpath('.'));
handleError($reg);

$args = array('message');
$srv = $registry->registerService('sw4p', 'message/set', 'sw4pfunc.php', 'setMessage', $args);
handleError($srv);

print "<h2>try 1</h2>";
print "<p>You want to know if a specific method is already defined</p>";

$method = 'message/get';
$srv = $registry->hasMethod($method);
if ($srv) {
    echo '<font color="blue"><b>Method "'.$method.'" is already defined</b></font><br/>';
} else {
    echo '<font color="red"><b>Method "'.$method.'" is unknown</b></font><br/>';
}

$method = 'message/add';
$srv = $registry->hasMethod($method, 'sw4p');
if ($srv) {
    echo '<font color="blue"><b>SW4P Method "'.$method.'" is already defined</b></font><br/>';
} else {
    echo '<font color="red"><b>SW4P Method "'.$method.'" is unknown</b></font><br/>';
}

print "<h2>try 2</h2>";
print "<p>You want to retrieve application that implement a specific method</p>";

$method = 'message/get';
$app = $registry->getHandler($method);

echo '<font color="blue"><b>Method "'.$method.'" is used by "'.$app.'" application</b></font>';
?>

href:  examples/services/search.php
Run this script

[Top]