protected function loadFromArray($filePath, $ext = '.php') { if (file_exists($filePath)) { $key = basename($filePath, $ext); $newConfigs[$key] = (include $filePath); Ary::MergeRecursive($this->config, $newConfigs); } }
public function AutoBuildCollection($registryFile, $iface = '') { $files = $this->GetConventionPaths("/Registry/{$registryFile}"); if ($this->isAbstract($iface)) { $check = function (string $class) use($iface) { if (class_exists($class)) { $refClass = new \ReflectionClass($class); if ($refClass->isSubclassOf($iface)) { return true; } else { Log::Warning("Try to auto-build {$class}, but class isn't instance of {$iface}."); } } else { Log::Warning("Try to auto-build {$class}, but class not exist."); } return false; }; } else { $check = function (string $class) { if (class_exists($class)) { return true; } else { Log::Warning("Try to auto-build {$class}, but class not exist."); } //没有传入iface就不检查默认true return false; }; } $newClasses = []; foreach ($files as $file) { if (file_exists($file)) { $tempClass = (include $file); Ary::MergeRecursive($newClasses, $tempClass); } } $newInstances = []; foreach ($newClasses as $key => $newClass) { if (is_array($newClass)) { foreach ($newClass as $tempClass) { if ($check($newClass)) { $newInstances[$key][] = $this->BuildWithClass($newClass); } } } else { if ($check($newClass)) { $newInstances[$key] = $this->BuildWithClass($newClass); } } } return $newInstances; }