Exemple #1
0
 /**
  *
  * @param unknown $object
  * @param string $viewprefix
  */
 private function _setObject($object, $viewprefix = null)
 {
     // Generate viewprefix as only lowercase classname without NS if it is not specified
     $class_name = is_string($viewprefix) ? $viewprefix : '' . mb_strtolower(classname(get_class($object)), 'UTF-8');
     // Save object to view data
     $this->data[$class_name] = $object;
     // Add separator
     $class_name .= '_';
     // Generate objects view array data and merge it with view data
     $this->data = array_merge($this->data, $object->toView($class_name));
 }
 /**
  * Remove all USE statements and replace class shortcuts to full class names
  *
  * @param string $code    Code to work with
  * @param array  $classes Array of class names to replace
  *
  * @return bool|mixed|string
  */
 private function removeUSEStatement($code, array $classes)
 {
     // Iterate found use statements
     foreach (array_unique($classes) as $full_class) {
         // Get class shortcut
         $class_name = classname($full_class);
         // Check class existance
         if (!class_exists($full_class) && !interface_exists($full_class)) {
             return e('Found USE statement for undeclared class ##', E_SAMSON_FATAL_ERROR, $full_class);
         }
         // Replace class static call
         $code = preg_replace('/([^\\\\a-z])' . $class_name . '::/i', '$1' . $full_class . '::', $code);
         // Replace class implements calls
         $code = preg_replace('/\\s+implements(.*\\W)' . $class_name . '([^\\\\])/i', ' implements $1' . $full_class . '$2 ', $code);
         // Handle instanceof operator
         $code = preg_replace('/instanceof\\s+' . $class_name . '/i', 'instanceof ' . $full_class . '', $code);
         // Replace class extends calls
         $code = preg_replace('/extends\\s+' . $class_name . '/i', 'extends ' . $full_class . '', $code);
         // Replace class hint calls
         $code = preg_replace('/(\\(|\\s|\\,)\\s*' . $class_name . '\\s*(&|$)/i', '$1' . $full_class . ' $2', $code);
         // Replace class creation call
         $code = preg_replace('/new\\s+' . $class_name . '\\s*\\(/i', 'new ' . $full_class . '(', $code);
         // Replace annotations
         $code = preg_replace('/([, (])' . $class_name . '\\s\\$/i', '$1 $2' . $full_class . ' $', $code);
     }
     return $code;
 }