77
88use yii \base \Arrayable ;
99use yii \db \ActiveRecordInterface ;
10- use yii \db \BaseActiveRecord ;
11- use yii \helpers \ArrayHelper ;
1210use yii \helpers \Inflector ;
1311
1412trait ResourceTrait
@@ -41,8 +39,14 @@ public function getType()
4139 public function getResourceAttributes (array $ fields = [])
4240 {
4341 $ attributes = [];
42+ if ($ this instanceof Arrayable) {
43+ $ fieldDefinitions = $ this ->fields ();
44+ } else {
45+ $ vars = array_keys (\Yii::getObjectVars ($ this ));
46+ $ fieldDefinitions = array_combine ($ vars , $ vars );
47+ }
4448
45- foreach ($ this ->resolveFields ($ this -> fields () , $ fields ) as $ name => $ definition ) {
49+ foreach ($ this ->resolveFields ($ fieldDefinitions , $ fields ) as $ name => $ definition ) {
4650 $ attributes [$ name ] = is_string ($ definition ) ? $ this ->$ definition : call_user_func ($ definition , $ this , $ name );
4751 }
4852 return $ attributes ;
@@ -54,8 +58,12 @@ public function getResourceAttributes(array $fields = [])
5458 public function getResourceRelationships ()
5559 {
5660 $ relationships = [];
61+ $ fields = [];
62+ if ($ this instanceof Arrayable) {
63+ $ fields = $ this ->extraFields ();
64+ }
5765
58- foreach ($ this ->resolveFields ($ this -> extraFields () ) as $ name => $ definition ) {
66+ foreach ($ this ->resolveFields ($ fields ) as $ name => $ definition ) {
5967 $ relationships [$ name ] = is_string ($ definition ) ? $ this ->$ definition : call_user_func ($ definition , $ this , $ name );
6068 }
6169 return $ relationships ;
@@ -77,23 +85,6 @@ public function setResourceRelationship($name, $relationship)
7785 }
7886 }
7987
80- /**
81- * @return array
82- */
83- public function fields ()
84- {
85- $ fields = array_keys (\Yii::getObjectVars ($ this ));
86- return array_combine ($ fields , $ fields );
87- }
88-
89- /**
90- * @return array
91- */
92- public function extraFields ()
93- {
94- return [];
95- }
96-
9788 /**
9889 * @param array $fields
9990 * @param array $fieldSet
0 commit comments