Files
server/usr/share/psa-pear/pear/php/Horde/Shutdown.php
2026-01-07 20:52:11 +01:00

74 lines
1.6 KiB
PHP

<?php
/**
* Copyright 2013-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package Core
*/
/**
* Global horde shutdown task queue.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package Core
* @since 2.4.0
*/
class Horde_Shutdown
{
/**
* Tasks.
*
* @var array
*/
private $_tasks = array();
/**
* Add a task to the global Horde shutdown queue.
*
* @param Horde_Shutdown_Task $task Task to add.
*/
public static function add(Horde_Shutdown_Task $task)
{
$GLOBALS['injector']->getInstance('Horde_Shutdown')->addTask($task);
}
/**
* Constructor.
*/
public function __construct()
{
register_shutdown_function(array($this, 'runTasks'));
}
/**
* Add a task to the shutdown queue.
*
* @param Horde_Shutdown_Task $task Task to add.
*/
public function addTask(Horde_Shutdown_Task $task)
{
$this->_tasks[get_class($task)] = $task;
}
/**
* Run shutdown tasks.
*/
public function runTasks()
{
foreach ($this->_tasks as $val) {
try {
$val->shutdown();
} catch (Exception $e) {}
}
}
}