Esempio n. 1
0
 protected function loadFromArray($filePath, $ext = '.php')
 {
     if (file_exists($filePath)) {
         $key = basename($filePath, $ext);
         $newConfigs[$key] = (include $filePath);
         Ary::MergeRecursive($this->config, $newConfigs);
     }
 }
Esempio n. 2
0
 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;
 }