docs for connect_info:Как работает DBIx :: Class :: Storage :: DBI's connect_info?
connect_info
Этот метод обычно называется по "связи" в DBIx :: Class :: Schema, который инкапсулирует свой список аргументов в ссылку на массив перед передачей их здесь.
Список аргументов может содержать:
То же 4-элементный аргумент установлен один, как правило, переходят на «соединить» в DBI, необязательно с последующим дополнительными атрибутами, признаваемых DBIx :: Класс:
$connect_info_args = [ $dsn, $user, $password, \%dbi_attributes?, \%extra_attributes? ];
единый справочный код, который возвращает , связанную базу данных DBI ручка может следовать дополнительные атрибуты признаваемых DBIx :: Класс:
$connect_info_args = [ sub { DBI->connect (...) }, \%extra_attributes? ];
Один hashref со всеми атрибутами и DSn/пользователь/пароль смешанные вместе:
$connect_info_args = [{ dsn => $dsn, user => $user, password => $pass, %dbi_attributes, %extra_attributes, }]; $connect_info_args = [{ dbh_maker => sub { DBI->connect (...) }, %dbi_attributes, %extra_attributes, }];
Это особенно полезно для приложений на основе Catalyst, что позволяет следующий конфигурационный (Config :: Общий стиль):
<Model::DB> schema_class App::DB <connect_info> dsn dbi:mysql:database=test user testuser password TestPass AutoCommit 1 </connect_info> </Model::DB>
dsn
/user
/password
комбинация может быть замененаdbh_maker
ключа , значение которого является coderef, которая возвращает подключенную базу данных DBI обрабатыватьПожалуйста, обратите внимание, что документы DBI рекомендуется всегда явно установить
AutoCommit
к либо 0 или 1. DBIx :: Class далее рекомендует установить значение в 1 и выполнить транзакции через наш «txn_do» в DBIx :: Class :: Schema. DBIx :: Class задает значение 1, если вы не , явно установите его на ноль. Это значение по умолчанию для большинства DBD. Подробнее см. В разделе «DBIx :: Class и AutoCommit».
Что это? Это метод, называемый внутренним или глобальным? И если это метод, называемый внутри, почему он отправляется либо создателем dbh, либо четырьмя аргументами? Что определяет, что он отправляет? Он указан как метод. Что такое $connect_info_args
?
Если вы собираетесь распечатать весь раздел документации, можете ли вы, по крайней мере, отформатировать его так, чтобы его можно было прочитать? Просто ссылка была бы лучше, чем неразборчивый беспорядок. – ThisSuitIsBlackNot
Это актуально, если вы наследуете класс схемы и хотите повлиять на то, как создается соединение. Это может быть для отладки целей или для ввода тестовой базы данных или чего-то подобного. Это также интересно, потому что он возвращает информацию о соединении, которая снова полезна для тестирования, отладки, профилирования и, вероятно, также в странных случаях производства. Я не стану публиковать это как ответ, потому что я слишком устал, чтобы подробно разбираться. Если вы просто используете DBIC, вам не нужно иметь дело с этим. – simbabque
Несомненно, это метод аргументации? Является ли $ connect_info_args тем, что я получаю, или тем, что я возвращаю? Что получает метод? есть ли две подписи? –