Addons.php
11 months ago
Admin.php
8 months ago
Ajax.php
9 months ago
Announcements.php
1 year ago
Assets.php
7 months ago
Backend_Page_Trait.php
1 year ago
BaseController.php
1 year ago
Config.php
11 months ago
Container.php
11 months ago
Course.php
5 months ago
Course_Embed.php
3 years ago
Course_Filter.php
1 year ago
Course_List.php
5 months ago
Course_Settings_Tabs.php
1 year ago
Course_Widget.php
1 year ago
Custom_Validation.php
3 years ago
Dashboard.php
1 year ago
Earnings.php
9 months ago
FormHandler.php
2 years ago
Frontend.php
1 year ago
Gutenberg.php
1 year ago
Icon.php
8 months ago
Input.php
1 year ago
Instructor.php
1 year ago
Instructors_List.php
11 months ago
Lesson.php
8 months ago
Options_V2.php
7 months ago
Permalink.php
2 years ago
Post_types.php
1 year ago
Private_Course_Access.php
1 year ago
Q_And_A.php
10 months ago
Question_Answers_List.php
11 months ago
Quiz.php
5 months ago
QuizBuilder.php
11 months ago
Quiz_Attempts_List.php
9 months ago
RestAPI.php
2 years ago
Reviews.php
9 months ago
Rewrite_Rules.php
2 years ago
Shortcode.php
9 months ago
Singleton.php
1 year ago
Student.php
1 year ago
Students_List.php
1 year ago
Taxonomies.php
1 year ago
Template.php
9 months ago
Theme_Compatibility.php
3 years ago
Tools.php
1 year ago
Tools_V2.php
1 year ago
Tutor.php
7 months ago
TutorEDD.php
1 year ago
Tutor_Base.php
2 years ago
Tutor_Setup.php
8 months ago
Upgrader.php
9 months ago
User.php
4 months ago
Utils.php
5 months ago
Video_Stream.php
3 years ago
WhatsNew.php
9 months ago
Withdraw.php
1 year ago
Withdraw_Requests_List.php
11 months ago
WooCommerce.php
7 months ago
Singleton.php
68 lines
| 1 | <?php |
| 2 | /** |
| 3 | * An abstract base class to make Singleton class |
| 4 | * |
| 5 | * @package Tutor\Classes |
| 6 | * @author Themeum <support@themeum.com> |
| 7 | * @link https://themeum.com |
| 8 | * @since 3.0.0 |
| 9 | */ |
| 10 | |
| 11 | namespace TUTOR; |
| 12 | |
| 13 | if ( ! defined( 'ABSPATH' ) ) { |
| 14 | exit; |
| 15 | } |
| 16 | |
| 17 | /** |
| 18 | * Class Singleton |
| 19 | */ |
| 20 | abstract class Singleton { |
| 21 | |
| 22 | /** |
| 23 | * Store instances for each child class. |
| 24 | * |
| 25 | * @var array |
| 26 | */ |
| 27 | private static $instances = array(); |
| 28 | |
| 29 | /** |
| 30 | * Constructor prevent for new instance. |
| 31 | * |
| 32 | * @access protected |
| 33 | */ |
| 34 | protected function __construct() { } |
| 35 | |
| 36 | /** |
| 37 | * Prevent object clone |
| 38 | * |
| 39 | * @access protected |
| 40 | */ |
| 41 | protected function __clone() { } |
| 42 | |
| 43 | /** |
| 44 | * Get instance of class. |
| 45 | * |
| 46 | * @return static |
| 47 | */ |
| 48 | public static function get_instance() { |
| 49 | $class = static::class; |
| 50 | if ( ! isset( self::$instances[ $class ] ) ) { |
| 51 | self::$instances[ $class ] = new static(); |
| 52 | } |
| 53 | return self::$instances[ $class ]; |
| 54 | } |
| 55 | |
| 56 | /** |
| 57 | * Reset a class instance |
| 58 | * |
| 59 | * @return void |
| 60 | */ |
| 61 | public static function reset_instance() { |
| 62 | $class = static::class; |
| 63 | if ( isset( self::$instances[ $class ] ) ) { |
| 64 | unset( self::$instances[ $class ] ); |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 |