RedBeanPHP uses class naming convention привязать модель к столу. Я не могу придерживаться этого соглашения об именах, так как у меня есть проект, в котором имена таблиц не заданы. Мне нужен способ подключения RedBean_SimpleModel
к имени таблицы без соглашения об именах - Как это сделать?Любые альтернативы Соглашению об именовании модели RedBean/Fuse?
3
A
ответ
6
ОК, я нашел одно решение, проходя через API documentation. Я могу установить свой собственный «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);
По этой причине я повременить маркировки это как правильный ответ на какое-то время.