【问题标题】:Any alternatives to the RedBean/Fuse Model naming convention?RedBean/Fuse 模型命名约定的任何替代方案?
【发布时间】:2012-04-25 21:31:05
【问题描述】:

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

【问题讨论】:

    标签: php redbean


    【解决方案1】:

    好的,我在查看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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多