Добрый день уважаемые форумчане. Вот все таки решил сделать еще один шаг в ООП. все модели или почти все, которые я использую, работают с БД. поэтому в каждой модели уместно использование одних и тех же функций. в частности это exchangeArray(), toArray(). Решил подойти к вопросу с рефлексией. Идея в том чтобы заполнять параметры разных классов по ключам в массиве. - Есть ключ? если есть то установить параметр класса совпадающий названием с ключем массива в значение массива под совпадающим ключем. Иначе за null'ить. на данный момент вот что вышло Код (Text): class MyClass{ public $id; public $param1; public $param2; ... public $paramN; public function __construct (){} // извлечение свойств из массива public function exchangeArray($data){ if ( !is_array ( $data )){ throw new Exception("Переменная должна быть массивом"); } $reflect = new ReflectionClass(__CLASS__); $publicVars = $reflect-> getProperties(ReflectionProperty::IS_PUBLIC); foreach ( $publicVars as $var) { $varName = $var->name; if (isset($data[$varName])){ $data2 = $data[$varName]; } $data3 = $this->${$varName}; $this ->${$varName} = isset($data[$varName]) ? $data[$varName] : NULL; } } // передача свойств в массив public function ToArray(){ $reflect = new ReflectionClass(__CLASS__); $publicVars = $reflect-> getProperties(ReflectionProperty::IS_PUBLIC); $array = array(); foreach ( $publicVars as $var) { $varName = $var->name; $array[$varName] = isset(self::$varName)?self::$varName:NULL; } return $array; } ... } ошибка возникает (точнее прерывается выполнение скрипта на строках $varName = $var->name; if (isset($data[$varName])){ <-- просто вылетает скрипт, никаких исключений, никаких сообщений. Подскажите как реализовать задуманное?