7
7
8
8
use yii \base \Arrayable ;
9
9
use yii \db \ActiveRecordInterface ;
10
- use yii \db \BaseActiveRecord ;
11
- use yii \helpers \ArrayHelper ;
12
10
use yii \helpers \Inflector ;
13
11
14
12
trait ResourceTrait
@@ -41,8 +39,14 @@ public function getType()
41
39
public function getResourceAttributes (array $ fields = [])
42
40
{
43
41
$ 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
+ }
44
48
45
- foreach ($ this ->resolveFields ($ this -> fields () , $ fields ) as $ name => $ definition ) {
49
+ foreach ($ this ->resolveFields ($ fieldDefinitions , $ fields ) as $ name => $ definition ) {
46
50
$ attributes [$ name ] = is_string ($ definition ) ? $ this ->$ definition : call_user_func ($ definition , $ this , $ name );
47
51
}
48
52
return $ attributes ;
@@ -54,8 +58,12 @@ public function getResourceAttributes(array $fields = [])
54
58
public function getResourceRelationships ()
55
59
{
56
60
$ relationships = [];
61
+ $ fields = [];
62
+ if ($ this instanceof Arrayable) {
63
+ $ fields = $ this ->extraFields ();
64
+ }
57
65
58
- foreach ($ this ->resolveFields ($ this -> extraFields () ) as $ name => $ definition ) {
66
+ foreach ($ this ->resolveFields ($ fields ) as $ name => $ definition ) {
59
67
$ relationships [$ name ] = is_string ($ definition ) ? $ this ->$ definition : call_user_func ($ definition , $ this , $ name );
60
68
}
61
69
return $ relationships ;
@@ -77,23 +85,6 @@ public function setResourceRelationship($name, $relationship)
77
85
}
78
86
}
79
87
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
-
97
88
/**
98
89
* @param array $fields
99
90
* @param array $fieldSet
0 commit comments