2012-04-13 4 views
3

RedBeanPHP uses class naming conventionモデルをテーブルに結びつける。テーブル名が石で設定されていないプロジェクトがあるので、私はその命名規則を守ることができません。私はRedBean_SimpleModelをテーブル名に命名規則なしで接続する方法が必要です - どうすればいいですか? API documentationを通過しながら、RedBean/Fuseモデルの命名規則に代わるものはありますか?

答えて

6

はOK、私は1つの解決策を見つけました。私は自分の "Model Formatter"を設定することができます。これは、テーブルの名前とクラスの名前を結ぶ責任を持つクラスを作成できることを意味します。マイ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); 

:私はむしろこのような何かを行うことができるだろう。

関連する問題