这是一个棘手的问题。
我正在 Laravel 中构建一个框架,我希望我的对象以透明的方式与 Rackspace 交互。 从现在开始,我可以上传/删除对象,而无需考虑 Rackspace
$model->file = Input::file('thing'); // and it uploads to Rackspace.
我想要实现的下一步是使用我的配置文件获取路由。行为类似于 $route = $file->source
(例如,数据库中的源代码为 hello.jpg)并获取 $route 作为rackspace.com/WHATEVER/hello.jpg。 rackspace.com/WHATEVER 部分位于我的配置文件中,因此我唯一需要的是如何实现此行为。
我进行了大量搜索,只找到了 __call()
方法来做到这一点。
我想要像这样表现的字段是动态的,并且是从数组设置的,例如:
public static $rackspaceable = array('source' => 'images-demo');
其中 images-demo 是 Rackspace 容器。
有谁知道如何实现这一目标以及是否有可能?
最佳答案
这可能就是您正在寻找的:
class Model extends Eloquent {
public static $rackspaceable = array('source' => 'images-demo');
public function __get($key)
{
if (isset(static::$rackspaceable[$key]))
{
return static::$rackspaceable[$key];
}
return parent::__get($key);
}
public function __set($key, $value)
{
if (isset(static::$rackspaceable[$key]))
{
static::$rackspaceable[$key] = $value;
}
else
{
parent::__set($key, $value);
}
}
}
使用它:
$model = new Model;
var_dump( $model->source );
$model->source = 'new value';
var_dump( $model->source );
关于php - Laravel 中的自定义 setter 和 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359363/