diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/Connection/CallbackConnectionProvider.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/src/Connection/CallbackConnectionProvider.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/Connection/CallbackConnectionProvider.php b/www/wiki/extensions/SemanticMediaWiki/src/Connection/CallbackConnectionProvider.php new file mode 100644 index 00000000..84d6a7fb --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/src/Connection/CallbackConnectionProvider.php @@ -0,0 +1,53 @@ +<?php + +namespace SMW\Connection; + +/** + * @license GNU GPL v2+ + * @since 3.0 + * + * @author mwjames + */ +class CallbackConnectionProvider implements ConnectionProvider { + + /** + * @var callable + */ + private $callback; + + /** + * @var mixed + */ + private $connection; + + /** + * @since 3.0 + * + * @param callable $callback + */ + public function __construct( callable $callback ) { + $this->callback = $callback; + } + + /** + * @since 3.0 + * + * @return mixed + */ + public function getConnection() { + + if ( $this->connection === null ) { + $this->connection = call_user_func( $this->callback ); + } + + return $this->connection; + } + + /** + * @since 3.0 + */ + public function releaseConnection() { + $this->connection = null; + } + +} |