/** * Метод преобразует данный объект в ассоциативный массив */ public function asAssocArray(array $allowed = null) { $class = __CLASS__; $result = array(); foreach (PsUtil::getClassProperties($class, false, false) as $fieldName) { check_condition(UserBean::hasColumn($fieldName), "Поле {$class}::{$fieldName} не может быть свойством пользователя"); if ($allowed === null || in_array($fieldName, $allowed)) { $result[$fieldName] = $this->{$fieldName}; } } return $result; }
/** * @covers PsUtil::getClassProperties */ public function testGetClassProperties() { $this->assertEquals(array('MY_PROP_ARR', 'MY_PROP_INT'), PsUtil::getClassProperties(new ClassA(), true, true)); $this->assertEquals(array('MY_PROP_ARR', 'MY_PROP_INT', 'MY_PROP_BOOL'), PsUtil::getClassProperties(ClassA::get__FILE__(), null, true)); $this->assertEquals(array('MY_PROP_DOUBLE'), PsUtil::getClassProperties(ClassA::get__CLASS__(), true, false)); $this->assertEquals(array('MY_PROP_DOUBLE', 'MY_PROP_ARR', 'MY_PROP_INT'), PsUtil::getClassProperties(ClassA::get__FILE__(), true)); $this->assertEquals(array('MY_PROP_DOUBLE', 'MY_PROP_ARR', 'MY_PROP_INT', 'MY_PROP_BOOL'), PsUtil::getClassProperties(ClassA::get__FILE__(), null)); }