Php 如何在非模型类上实现getXAttribute

Php 如何在非模型类上实现getXAttribute,php,laravel,Php,Laravel,我有一个自定义类,它向NAV服务器请求getItems(),并返回一个数组。我能够收集($array)并使用所有收集函数,例如groupBy、where,但我似乎找不到一种方法使$appends工作。 例如,我希望这个类有一个 公共函数getPriceAttribute(){ 返回$this->customCollection->Unit_Price*100.“欧元”; } 我在网上找到的所有文档都是关于模型的。我知道这是一个模型,但是如果不使用数据库表就可以工作,那就太棒了,因为所有的数据都

我有一个自定义类,它向NAV服务器请求getItems(),并返回一个数组。我能够收集($array)并使用所有收集函数,例如groupBy、where,但我似乎找不到一种方法使$appends工作。 例如,我希望这个类有一个

公共函数getPriceAttribute(){
返回$this->customCollection->Unit_Price*100.“欧元”;
}
我在网上找到的所有文档都是关于模型的。我知道这是一个模型,但是如果不使用数据库表就可以工作,那就太棒了,因为所有的数据都来自一个NavClient


谢谢

此功能是在
模型
类中编码的,因此可能无法轻松地将其用于非模型。相反,您可以将相关代码复制到类中

Laravel在中使用。然后在
HasAttributes
trait中选择它,然后

公共函数hasGetMutator($key)
{
返回方法_存在($this,'get'.Str::studly($key)。'Attribute');
}
受保护的函数mutateAttribute($key,$value=null)
{
返回$this->{'get'.Str::studly($key)。'Attribute'}($value);
}
公共功能获取($key)
{
如果($this->hasGetMutator($key)){
返回$this->mutateAttribute($key);
}
}
注意:
\uu get()
方法只有在没有具有请求名称的公共属性时才会被调用(在您的例子中是
price


更新:有更详细的功能。

此功能在
模型
类中编码,因此可能无法轻松地将其用于非模型。相反,您可以将相关代码复制到类中

Laravel在中使用。然后在
HasAttributes
trait中选择它,然后

公共函数hasGetMutator($key)
{
返回方法_存在($this,'get'.Str::studly($key)。'Attribute');
}
受保护的函数mutateAttribute($key,$value=null)
{
返回$this->{'get'.Str::studly($key)。'Attribute'}($value);
}
公共功能获取($key)
{
如果($this->hasGetMutator($key)){
返回$this->mutateAttribute($key);
}
}
注意:
\uu get()
方法只有在没有具有请求名称的公共属性时才会被调用(在您的例子中是
price


更新:有更详细的内容。

不在后面。当你说“让它在没有数据库表的情况下工作”是什么意思?这个自定义类与此有什么关系?困惑的也许分享一些代码。答案正是我想要的。我将尽快编辑我的答案,以提供进一步的代码。不要跟随。当你说“让它在没有数据库表的情况下工作”是什么意思?这个自定义类与此有什么关系?困惑的也许分享一些代码。答案正是我想要的。我将尽快编辑我的答案,以提供进一步的代码。