/** * * @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; }