Laravel的定制设定者和吸气剂

时间:2014-03-12 17:29:30

标签: php frameworks laravel laravel-4 call

这是一个棘手的问题。

我正在Laravel中构建一个框架,我希望我的对象以透明的方式与Rackspace交互。 从现在开始,我可以上传/删除对象而无需考虑Rackspace

$model->file = Input::file('thing'); // and it uploads to Rackspace.

我想要实现的下一步是使用我的配置文件获取路由。行为类似于$route = $file->source(例如数据库中包含hello.jpg的源代码),并将$ route作为rackspace /WHATEVER/hello.jpg。部件rackspace.com/WHATEVER在我的配置文件中,所以我唯一需要的是如何做出这种行为。

我一直在广泛搜索,我只找到了__call()方法。 我想要表现的字段是动态的,并且是通过如下数组设置的:

public static $rackspaceable = array('source' => 'images-demo');

其中images-demo是Rackspace容器。

有没有人知道要实现这一点,甚至是否可能?

1 个答案:

答案 0 :(得分:0)

这可能就是你要找的东西:

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 );