6.0.0-git
2018-12-10
Last Modified 2013-09-04 by Jan Schneider

Horde_Registry

This information is valid for Horde 3 only.

Registry usage example:

require_once HORDE_BASE . 'Horde/Registry.php';

// The Registry has a singleton method that should be used to ensure
// that there is only ever one instance of the Registry during a request.
$registry = &Registry::singleton();

// All applications should put themselves on the application stack when they start running
// This also takes care of reading the application's configuration file.
$registry->pushApp('curapp');

// When an app is finished, pop it off the application stack
// This also returns the global $conf variable to that of the previous application.
$registry->popApp();

// Routines can determine the current app:
$curapp = $registry->getApp();

// Find out if an application allows access for the current user (may be a guest user)
if ($registry->hasPermission('app')) {
    // access allowed
}

Creating the Registry object, one can control how and if a session is started. Note that this only works if calling Registry::singleton() for the first time.

// Let the registry start a regular session.
$registry = &Registry::singleton();

// Let the registry start a readonly session.
$registry = &Registry::singleton(HORDE_SESSION_READONLY);

// Don't let the registry start a session.
$registry = &Registry::singleton(HORDE_SESSION_NONE);

The Registry lets you generate links to other apps

require_once HORDE_BASE . 'Horde/Registry.php';
$registry = &Registry::singleton();

// Check to see if the functionality we want is there
if (!$registry->hasMethod('mail/compose')) {
    echo 'no mail/compose method defined';
    exit;
}

// Generate the link
echo $registry->link('mail/compose', array('to' => 'foo@example.com', 'subject' => 'bar'));

The Registry also lets you invoke methods in other applications

require_once HORDE_BASE . 'Horde/Registry.php';
$registry = &Registry::singleton();

// Check to see if the functionality we want is there
if (!$registry->hasMethod('contacts/search')) {
    echo 'no contacts/search method defined';
    exit;
}

// The contacts/search method takes two arrays; one of names, one of addressbooks
$args = array('sources' => array('myldap'),
              'names' => array('Chuck'),
              'fields' => array('name', 'email'));
$results = $registry->call('contacts/search', $args);

// Using Horde 3.1 and PHP 5, calling API methods is even more elegant:
$results = $registry->contacts->search($args);