php - Laravel 中的自定义 setter 和 getter

标签 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.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/

相关文章:

php - 当 Match Against 函数在 Mysql 中没有给出任何结果时,LIKE 函数会给我更好的结果吗

php - symfony3 : create form for entity that has a column with many to one relationship

ios - 无法在 Xcode 10 上存档

php - 如何使用具有相同 Controller 的 Laravel 制作网站和 API REST?

php - 如何使用 Codeigniter 在单个文件上传中上传多个图像?

php - 覆盖joomla类别 ListView

xcode - 使用命令行向 Xcode 项目添加库/框架?

xcode - 在 "Framework Search Paths"中搜索私有(private)框架

php - Laravel 5缓存路由未更新

php - 在 laravel/blade 中从数组创建逗号分隔列表?