public function toNamespace($className = null, $separator = self::dot, $reduce = 1) { self::$separator = $separator; if (self::$mode == true) { $className = is_string($className) ? $className : self::$working; if (strstr($className, self::$separator)) { $arrClassName = array_reverse(explode(self::$separator, $className)); } else { $underscore = QTool::init()->toUnderscore($className); $array = QTool::init()->toArray($underscore, self::uscore); self::$mode = true; $arrClassName = array_reverse($array); } $arrNamespace = array(); foreach ($arrClassName as $key => $strName) { $arrNamespace[] = $key < count($arrClassName) - 1 ? QInflector::init()->pluralize($strName) : $strName; } self::set(implode(self::dot, $arrNamespace)); self::$separator = self::dot; return $this; } else { $arrClassName = strstr($className, self::$separator) ? array_reverse(explode(self::$separator, $className)) : array_reverse(QTool::init()->toArray(QTool::init()->toUnderscore($className)), self::$separator); $arrNamespace = array(); foreach ($arrClassName as $key => $strName) { $arrNamespace[] = $key < count($arrClassName) - $reduce ? QInflector::init()->pluralize($strName) : $strName; } return implode(self::dot, $arrNamespace); } }