3 namespace Robo\Collection;
6 * The temporary collection keeps track of the global collection of
7 * temporary cleanup tasks in instances where temporary-generating
8 * tasks are executed directly via their run() method, rather than
9 * as part of a collection.
11 * In general, temporary-generating tasks should always be run in
12 * a collection, as the cleanup functions registered with the
13 * Temporary collection will not run until requested.
15 * Since the results could be undefined if cleanup functions were called
16 * at arbitrary times during a program's execution, cleanup should only
17 * be done immeidately prior to program termination, when there is no
18 * danger of cleaning up after some unrelated task.
20 * An application need never use Temporary directly, save to
21 * call Temporary::wrap() inside loadTasks or loadShortcuts, and
22 * to call Temporary::complete() immediately prior to terminating.
23 * This is recommended, but not required; this function will be
24 * registered as a shutdown function, and called on termination.
28 private static $collection;
31 * Provides direct access to the collection of temporaries, if necessary.
33 public static function getCollection()
35 if (!static::$collection) {
36 static::$collection = \Robo\Robo::getContainer()->get('collection');
37 register_shutdown_function(function () {
42 return static::$collection;
46 * Call the complete method of all of the registered objects.
48 public static function complete()
50 // Run the collection of tasks. This will also run the
52 $collection = static::getCollection();
54 // Make sure that our completion functions do not run twice.