public function bind( $abstract, $concrete = null, $shared = false ) {

		unset( $this->instances[ $abstract ] );

		if ( is_null( $concrete ) ) {
			$concrete = $abstract;
		}

		$this->bindings[ $abstract ]   = compact( 'concrete', 'shared' );
		$this->extensions[ $abstract ] = [];
	}
public function bind( $abstract, $concrete = null, $shared = false ) {

		unset( $this->instances[ $abstract ] );

		if ( is_null( $concrete ) ) {
			$concrete = $abstract;
		}

		$this->bindings[ $abstract ]   = compact( 'concrete', 'shared' );
		$this->extensions[ $abstract ] = [];
	}
public function bind ( $ abstract , $ concrete = null , $ shared = false ) { unset ( $ this -> instances [ $ abstract ] ) ; if ( is_null ( $ concrete ) ) { $ concrete = $ abstract ; } $ this -> bindings [ $ abstract ] = compact ( 'concrete' , 'shared' ) ; $ this -> extensions [ $ abstract ] = [ ] ; }
Add a binding. The abstract should be a key, abstract class name, or
interface name. The concrete should be the concrete implementation of
the abstract. If no concrete is given, its assumed the abstract
handles the concrete implementation.

@since  5.0.0
@access public
@param  string  $abstract
@param  mixed   $concrete
@param  bool    $shared
@return void
Add a binding . The abstract should be a key abstract class name or interface name . The concrete should be the concrete implementation of the abstract . If no concrete is given its assumed the abstract handles the concrete implementation .