at path:
ROOT
/
wp-content
/
plugins
/
tutor
/
classes
/
Container.php
run:
R
W
Run
Addons.php
11.79 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Admin.php
26.61 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Ajax.php
17.03 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Announcements.php
2.79 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Assets.php
24.27 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Backend_Page_Trait.php
4.39 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
BaseController.php
1.47 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Config.php
3.16 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Container.php
4.85 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course.php
94.45 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course_Embed.php
2.55 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course_Filter.php
8.68 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course_List.php
14.68 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course_Settings_Tabs.php
1.16 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Course_Widget.php
8.2 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Custom_Validation.php
513 By
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Dashboard.php
1.23 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Earnings.php
10.43 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
FormHandler.php
7.16 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Frontend.php
2.94 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Gutenberg.php
4.62 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Icon.php
11.49 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Input.php
9.08 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Instructor.php
13.2 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Instructors_List.php
13.09 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Lesson.php
19.92 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Options_V2.php
67.77 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Permalink.php
2 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Post_types.php
18.3 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Private_Course_Access.php
2.52 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Q_And_A.php
10.78 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Question_Answers_List.php
2.55 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Quiz.php
35.16 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
QuizBuilder.php
12.53 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Quiz_Attempts_List.php
7.28 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
RestAPI.php
7.97 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Reviews.php
3.72 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Rewrite_Rules.php
5.18 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Shortcode.php
14.18 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Singleton.php
1.08 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Student.php
10.44 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Students_List.php
3.03 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Taxonomies.php
8.2 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Template.php
14.52 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Theme_Compatibility.php
683 By
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Tools.php
3.33 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Tools_V2.php
18.56 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Tutor.php
36.45 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
TutorEDD.php
4.69 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Tutor_Base.php
1.48 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Tutor_Setup.php
33.34 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Upgrader.php
12.49 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
User.php
14.9 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Utils.php
270.91 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Video_Stream.php
3.94 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
WhatsNew.php
4.83 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Withdraw.php
9.49 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
Withdraw_Requests_List.php
6.24 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
WooCommerce.php
24.76 KB
2026-04-14 05:34:26
R
W
Run
Delete
Rename
error_log
up
📄
Container.php
Save
<?php /** * Container for managing dependencies and bindings. * Supports binding, singleton registration, and autowiring via reflection. * * @package TutorPro\Classes * @author Themeum <support@themeum.com> * @link https://themeum.com * @since 3.7.0 */ namespace TUTOR; use ReflectionClass; /** * Class Container */ class Container { /** * Registered non-singleton bindings. * * @var array */ protected static $bindings = array(); /** * Registered singleton bindings. * * @var array */ protected static $singletons = array(); /** * Resolved singleton instances. * * @var array */ protected static $instances = array(); /** * Bind an abstract type to a concrete implementation. * * @param string $abstract abstract. * @param callable|string $concrete concrete. * @return void */ public static function bind( string $abstract, $concrete ): void { self::$bindings[ $abstract ] = $concrete; } /** * Get a registered binding, singleton, or instance without resolving it. * * @param string $abstract abstract. * * @return mixed|null Returns the binding, singleton, or instance if found; otherwise null. */ public static function get( string $abstract ) { if ( isset( self::$instances[ $abstract ] ) ) { return self::$instances[ $abstract ]; } if ( isset( self::$singletons[ $abstract ] ) ) { return self::$singletons[ $abstract ]; } if ( isset( self::$bindings[ $abstract ] ) ) { return self::$bindings[ $abstract ]; } return null; } /** * Check if a binding or instance exists. * * @param string $abstract abstract. * * @return bool */ public static function has( string $abstract ): bool { return isset( self::$bindings[ $abstract ] ) || isset( self::$singletons[ $abstract ] ) || isset( self::$instances[ $abstract ] ); } /** * Remove a binding, singleton, or instance. * * @param string $abstract abstract. * * @return void */ public static function remove( string $abstract ): void { unset( self::$bindings[ $abstract ], self::$singletons[ $abstract ], self::$instances[ $abstract ] ); } /** * Clear all bindings, singletons, and instances. * * @return void */ public static function clear(): void { self::$bindings = array(); self::$singletons = array(); self::$instances = array(); } /** * Register a singleton binding. * * @param string $abstract abstract. * @param callable|string $concrete concrete. * * @return void */ public static function singleton( string $abstract, $concrete ): void { self::$singletons[ $abstract ] = $concrete; } /** * Register an existing instance. * * @param string $abstract abstract. * @param object $object object. * * @return void */ public static function instance( string $abstract, $object ): void { self::$instances[ $abstract ] = $object; } /** * Resolve a class or binding. * * @param string $abstract abstract. * @return object object. * * @throws \Exception If can not resolve the dependency. */ public static function make( string $abstract ) { // Return existing instance. if ( isset( self::$instances[ $abstract ] ) ) { return self::$instances[ $abstract ]; } // Resolve singleton. if ( isset( self::$singletons[ $abstract ] ) ) { $concrete = self::$singletons[ $abstract ]; $object = is_callable( $concrete ) ? $concrete() : new $concrete(); self::$instances[ $abstract ] = $object; return $object; } // Resolve normal binding. if ( isset( self::$bindings[ $abstract ] ) ) { $concrete = self::$bindings[ $abstract ]; return is_callable( $concrete ) ? $concrete() : new $concrete(); } // Autowire. if ( class_exists( $abstract ) ) { return self::resolve( $abstract ); } throw new \Exception( "Cannot resolve: {$abstract}" ); } /** * Automatically resolve a class via Reflection. * * @param string $class class. * @return object object. * * @throws \Exception If class is not instantiable or un-resolvable dependencies. */ protected static function resolve( string $class ) { $reflector = new ReflectionClass( $class ); if ( ! $reflector->isInstantiable() ) { throw new \Exception( "Class {$class} is not instantiable." ); } $constructor = $reflector->getConstructor(); if ( ! $constructor ) { return new $class(); } $params = $constructor->getParameters(); $dependencies = array(); foreach ( $params as $param ) { $type = $param->getType(); if ( $type && ! $type->isBuiltin() ) { $dependencies[] = self::make( $type->getName() ); } elseif ( $param->isDefaultValueAvailable() ) { $dependencies[] = $param->getDefaultValue(); } else { throw new \Exception( "Unresolvable dependency [{$param->getName()}] in class {$class}" ); } } return $reflector->newInstanceArgs( $dependencies ); } }