SerializableClosureWrapper.php in X Autoload 7.5
File
src/Libraries/SerializableClosureWrapper.php
View source
<?php
namespace Drupal\xautoload\Libraries;
class SerializableClosureWrapper {
private $closure;
private $moduleName;
private $libraryName;
public function __construct($closure, $moduleName, $libraryName) {
$this->closure = $closure;
$this->moduleName = $moduleName;
$this->libraryName = $libraryName;
}
public function __sleep() {
return array(
'moduleName',
'libraryName',
);
}
public function __invoke($adapter) {
$closure = $this
->lazyGetClosure();
if ($closure instanceof \Closure) {
$closure($adapter);
}
}
private function lazyGetClosure() {
return isset($this->closure) ? $this->closure : ($this->closure = $this
->loadClosure());
}
private function loadClosure() {
$source_function = $this->moduleName . '_libraries_info';
if (!function_exists($source_function)) {
return FALSE;
}
$module_libraries = $source_function();
if (!isset($module_libraries[$this->libraryName]['xautoload'])) {
return FALSE;
}
$closure_candidate = $module_libraries[$this->libraryName]['xautoload'];
if (!$closure_candidate instanceof \Closure) {
return FALSE;
}
return $closure_candidate;
}
}