/** * Создает и возвращает новую схему на основе текущей и еще одной. * Если какое-то имя поля встречается и в текущей, и в другой схеме - * поле в текущей будет перезаписано. * * @param CM_Fieldschema $1 * @param CM_Fieldschema $2 * @return CM_Fieldschema $new_schema */ public static function merge(CM_Fieldschema $schema1, CM_Fieldschema $schema2) { $new_schema = new CM_Fieldschema(); foreach (array($schema1, $schema2) as $schema) { foreach ($schema->get_field_names() as $name) { $new_schema->set_field($name, $schema->get_field($name)); } } return $new_schema; }
/** * @param string $name * @return bool */ public function has_field($name, $check_parent = TRUE) { if ($check_parent and !is_null($this->_parent)) { return $this->_fieldschema->has_field($name) or $this->_parent->has_field($name); } return $this->_fieldschema->has_field($name); }
public function test_set_field() { $fieldschema = new CM_Fieldschema(); $fieldschema->set_field('test1', new CM_Field_String()); $this->assertTrue($fieldschema->has_field('test1')); }