Проблема

Столкнулся с такой не понятной проблемой.

Создан класс:




class MyClass extends CActiveRecord

{

	public static function model($className=__CLASS__) { return parent::model($className); }


	public function tableName() { return 'my_table'; }


	public function attributeLabels()

	{

		return array(

						'f1'=>'Поле 1',

						'f2'=>'Поле 2',

						'f3'=>'Поле 3',

						'f4'=>'Поле 4',

						'f5'=>'Поле 5',

						'f6'=>'Поле 6',

						'f7'=>'Поле 7'

					);

	}

}



Далее, в контроллере я создаю объект, таким образом:




$obj=null;


....какие-то действия...


if(Условие)

{

	$obj=new MyClass();	

	

	...Какие то действия по формированию массива $row с атрибутами...

	

	$obj->attributes=$row;

}

else $obj=MyClass::model()->findByPk(1);



И вот тут, в дальнейшем происходит не понятное. Если объект созданн по условию, т.е. через присвоение атрибутов, то все нормально: при запросе $obj->attributeLabels() - возвращается массив с теми значениями, которые были определены ранее.

А если объект создан не по условию, т.е. через model() - то $obj->attributeLabels() - возвращает пустой массив.

Как такое получается? И что делать?

Забыл: в обоих случаях значение всех полей для объекта верное (т.е. можно запросить $obj->f1 - вернет то что и ожидается). Версия Yii 1.0.10.

  • сейчас проверил, какая функция в каких случаях вызывается.

В первом случае: вызывается функция attributeLabels() класса MyClass

Во втором случае: вызывается функция attributeLabels() класса CModel

ну а чего ты хотел? в первом случае создаётся объект MyClass, а во втором ты просто обращаешься к его методу без его создания

Но ведь в документации четко написано что конструкция типа ClassName::modele()->findByPk(xxx) - возвращает экземпляр объекта класса ClassName .

Я дико извиняюсь: видимо сказывалось то что ночью писал. Сегодня глянув, по утру, нашел ошибку в коде у себя, в имени класса написал не ту букву. Тем можно закрыть.