/** * Required eine Variable, schlägt aber einen Default für die Config-Variable vor * */ public static function reqDefault($keys, $defaultValue) { try { $value = self::req($keys); } catch (MissingConfigVariableException $e) { if (is_string($defaultValue) && !Preg::match($defaultValue, '/^(\'|")/') && !self::NEW_ARRAY) { $defaultValue = "'" . $defaultValue . "'"; } $e->setDefault($defaultValue); throw $e; } return $value; }
/** * Gibt den (lcfirst) LowerCase Name für einen Klassennamen zurück * * OID => oid * OIDMeta => oidMeta * SomeClassName => someClassName * * @param $className ohne Namespace */ public function propertyName($className) { if (!is_string($className) || mb_strpos($className, '\\') !== FALSE) { throw new \InvalidArgumentException(sprintf("ClassName %s kann nicht zu propertyName umgewandelt werden. Er muss ein String sein und darf nur der ClassName sein", \Psc\Code\Code::varInfo($className))); } // 1. Fall: Klasse ist CamelCase. wichtig ist hierbei dass das erste a klein ist if (Preg::match($className, '/^[A-Z]{1}[a-z]{1}/') > 0) { return lcfirst($className); } // 2. Fall: Klassename ist eine Abkürzung. Z. B. OID (aka: der ganze String sind Großbuchstaben) if (Preg::match($className, '/^[A-Z]+$/')) { return mb_strtolower($className); } // 3. Fall: KlassenName ist mixed sowas wie OIDMeta // teile auf in m[1] = 'OID' m[2] = 'Meta' $m = array(); if (Preg::match($className, '/^([A-Z]+)([A-Z]{1}[a-z]{1}.*)$/', $m) > 0) { return mb_strtolower($m[1]) . $m[2]; } throw new \RuntimeException(sprintf("Kein matching Case für ClassName '%s'", $className)); }