services[ $name ] = $service; } /** * Remove a service from the container. * * @since 2.5 * * @param string $name The service name. */ public function remove( $name ) { unset( $this->services[ $name ] ); } /** * Get a service from the container by name. * * @since 2.5 * * @param string $name The service name. * * @return mixed|null */ public function get( $name ) { if ( ! isset( $this->services[ $name ] ) ) { return null; } if ( is_callable( $this->services[ $name ] ) ) { $called = $this->services[ $name ](); $this->services[ $name ] = $called; } return $this->services[ $name ]; } /** * Add a service provider to the container and register each of its services. * * @since 2.5 * * @param GF_Service_Provider $provider */ public function add_provider( GF_Service_Provider $provider ) { $provider_name = get_class( $provider ); // Only add providers a single time. if ( isset( $this->providers[ $provider_name ] ) ) { return; } $this->providers[ $provider_name ] = $provider; $provider->set_container( $this ); $provider->register( $this ); $provider->init( $this ); } }