微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – RedBean / Fuse Model命名约定的任何替代方案?

RedBeanPHP uses class naming convention将模型绑定到表格.我不能遵守这个命名约定,因为我有一个表名不是一成不变的项目.我需要一种方法将RedBean_SimpleModel连接到没有命名约定的表名 – 我该怎么做?

解决方法:

好的,我在浏览API documentation时找到了一个解决方案.我可以设置自己的“模型格式化程序”,这意味着我可以创建一个类,该类负责将表的名称与类的名称相关联.我的RedBean设置代码现在看起来像这样:

# Redbean
require('vendor/redbean/rb.PHP');

R::setup("MysqL:host=".MysqL_HOST.";dbname=".MysqL_DATABASE.";",
         MysqL_USERNAME, MysqL_PASSWORD);

# Set custom model formatter
class CustomredBeanModelFormatter implements RedBean_IModelFormatter
{
    public function formatModel($model)
    {
        switch($model)
        {
            case foo\bar\OmniDataManager::TABLE_DATA:
                return 'foo\bar\OmniDataModel';
            case foo\bar\OmniDataManager::TABLE_GROUP:
                return 'foo\bar\OmniDataGroupModel';
            default:
                return false;
        }
    }
}
$customredBeanModelFormatter = new CustomredBeanModelFormatter();
RedBean_ModelHelper::setModelFormatter($customredBeanModelFormatter);

这是一个丑陋的解决方案.我宁愿能做这样的事情:

RedBean_ModelHelper::setModelForTable($modelName, $tableName);

出于这个原因,我会暂时将此标记为正确的答案.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐