示例#1
0
 /**
  * Gets replacement class name for a parent class name or a list of traits to implement
  *
  * @param $class_name string can be short or full class name
  * @return string
  */
 private function replacementClassName($class_name)
 {
     if ($this->enabled) {
         $result = isset($this->replacements[$class_name]) ? $this->replacements[$class_name] : $class_name;
         if (is_array($result)) {
             if ($this->build) {
                 $this->compositions[$class_name] = $result;
                 $built_class_name = Class_Builder::builtClassName($class_name);
                 if (file_exists(Application::current()->getCacheDir() . '/compiled/' . str_replace('/', '-', Names::classToPath($built_class_name)))) {
                     $result = $built_class_name;
                 } else {
                     $result = Class_Builder::build($class_name, $result);
                 }
                 $this->replacements[$class_name] = $result;
             } else {
                 $result = $class_name;
             }
         } elseif (!$this->build && self::isBuilt($result)) {
             $result = $class_name;
         }
     } else {
         $result = $class_name;
     }
     return $class_name != $result && !self::isBuilt($result) ? $this->replacementClassName($result) : $result;
 }