PluginProbe
Gianism / trunk
Gianism vtrunk
4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.4.0 5.0.0 5.0.1 5.0.2 5.1.0 5.2.1 5.2.2 5.3.0 6.0.0 6.0.1 trunk 1.0 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 All 65 releases
gianism / app / Gianism / Pattern / Singleton.php

Singleton.php in Gianism trunk, at app/Gianism/Pattern/Singleton.php

47 lines 793 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Gianism\Pattern;
4
5 /**
6 * Singleton Pattern
7 *
8 * @package Gianism
9 * @author Takahashi Fumiki
10 * @since 2.0
11 */
12 abstract class Singleton {
13
14 /**
15 * Instance holder
16 *
17 * @var array
18 */
19 protected static $instances = [];
20
21 /**
22 * Constructor
23 *
24 * @param array $argument
25 * @phpstan-ignore constructor.unusedParameter
26 */
27 protected function __construct( array $argument = [] ) {
28 // Override something.
29 }
30
31 /**
32 * Get instance
33 *
34 * @param array $argument
35 *
36 * @return static
37 */
38 final public static function get_instance( array $argument = [] ) {
39 $class_name = get_called_class();
40 if ( ! isset( self::$instances[ $class_name ] ) ) {
41 self::$instances[ $class_name ] = new $class_name( $argument );
42 }
43
44 return self::$instances[ $class_name ];
45 }
46 }
47