name = $name; $this->definition = $definition; $this->validation_schema = $validation_schema; } /** * @see Schema::get * @since 3.0 * * @return mixed|null */ public function get( $key, $default = null ) { return $this->digDeep( $this->definition, $key, $default ); } /** * @see Schema::getName * @since 3.0 * * @return string */ public function getName() { return str_replace( '_', ' ', $this->name ); } /** * @see Schema::getValidationSchema * @since 3.0 * * @return string|null */ public function getValidationSchema() { return $this->validation_schema; } /** * @since 3.0 * * @return string */ public function jsonSerialize() { return json_encode( $this->definition ); } /** * @since 3.0 * * @return string */ public function __toString() { return $this->jsonSerialize(); } private function digDeep( $array, $key, $default ) { if ( strpos( $key, '.' ) !== false ) { $list = explode( '.', $key, 2 ); foreach ( $list as $k => $v ) { if ( isset( $array[$v] ) ) { return $this->digDeep( $array[$v], $list[$k+1], $default ); } } } if ( isset( $array[$key] ) ) { return $array[$key]; } return $default; } }