These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Robo\Collection; |
||
4 | |||
5 | /** |
||
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. |
||
10 | * |
||
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. |
||
14 | * |
||
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. |
||
19 | * |
||
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. |
||
25 | */ |
||
26 | class Temporary |
||
27 | { |
||
28 | private static $collection; |
||
29 | |||
30 | /** |
||
31 | * Provides direct access to the collection of temporaries, if necessary. |
||
32 | */ |
||
33 | public static function getCollection() |
||
34 | { |
||
35 | if (!static::$collection) { |
||
0 ignored issues
–
show
|
|||
36 | static::$collection = \Robo\Robo::getContainer()->get('collection'); |
||
0 ignored issues
–
show
Since
$collection is declared private, accessing it with static will lead to errors in possible sub-classes; consider using self , or increasing the visibility of $collection to at least protected.
Let’s assume you have a class which uses late-static binding: class YourClass
{
private static $someVariable;
public static function getSomeVariable()
{
return static::$someVariable;
}
}
The code above will run fine in your PHP runtime. However, if you now create a
sub-class and call the class YourSubClass extends YourClass { }
YourSubClass::getSomeVariable(); // Will cause an access error.
In the case above, it makes sense to update class SomeClass
{
private static $someVariable;
public static function getSomeVariable()
{
return self::$someVariable; // self works fine with private.
}
}
Loading history...
|
|||
37 | register_shutdown_function(function () { |
||
38 | static::complete(); |
||
39 | }); |
||
40 | } |
||
41 | |||
42 | return static::$collection; |
||
0 ignored issues
–
show
Since
$collection is declared private, accessing it with static will lead to errors in possible sub-classes; consider using self , or increasing the visibility of $collection to at least protected.
Let’s assume you have a class which uses late-static binding: class YourClass
{
private static $someVariable;
public static function getSomeVariable()
{
return static::$someVariable;
}
}
The code above will run fine in your PHP runtime. However, if you now create a
sub-class and call the class YourSubClass extends YourClass { }
YourSubClass::getSomeVariable(); // Will cause an access error.
In the case above, it makes sense to update class SomeClass
{
private static $someVariable;
public static function getSomeVariable()
{
return self::$someVariable; // self works fine with private.
}
}
Loading history...
|
|||
43 | } |
||
44 | |||
45 | /** |
||
46 | * Call the complete method of all of the registered objects. |
||
47 | */ |
||
48 | public static function complete() |
||
49 | { |
||
50 | // Run the collection of tasks. This will also run the |
||
51 | // completion tasks. |
||
52 | $collection = static::getCollection(); |
||
53 | $collection->run(); |
||
54 | // Make sure that our completion functions do not run twice. |
||
55 | $collection->reset(); |
||
56 | } |
||
57 | } |
||
58 |
Let’s assume you have a class which uses late-static binding:
The code above will run fine in your PHP runtime. However, if you now create a sub-class and call the
getSomeVariable()
on that sub-class, you will receive a runtime error:In the case above, it makes sense to update
SomeClass
to useself
instead: