Doctrine CLI: зарегистрировать новое пользовательское задание - PullRequest
0 голосов
/ 29 сентября 2010

Я использую Doctrine 1.2 и ZF 1.10.У меня нормально настроен интерфейс командной строки Doctrine для выполнения задач по умолчанию.Но я создал пару классов, которые я хотел бы выполнять из командной строки.Как мне настроить мой application.ini или doctrine.php для регистрации и использования этих новых классов?Например, я хочу иметь возможность выполнить APPLICATION_PATH."/job/Migrate.php", который является просто классом Migrate (), который имеет один открытый метод run () с чем-то вроде

php.exe doctrine custom-migrate

Фрагмент моего application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../lib"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
autoloaderNamespaces[] = "Doctrine"

; ---
; Database
; ---

doctrine.dsn = "mysql://user@pwd@localhost/db_name"
doctrine.data_fixtures_path = APPLICATION_PATH "/configs/data/fixtures"
doctrine.sql_path           = APPLICATION_PATH "/configs/data/sql"
doctrine.migrations_path    = APPLICATION_PATH "/configs/migrations"
doctrine.yaml_schema_path   = APPLICATION_PATH "/configs/schema.yml"
doctrine.models_path        = APPLICATION_PATH "/models" 

doctrine.generate_models_options.pearStyle = true
doctrine.generate_models_options.generateTableClasses = false
doctrine.generate_models_options.generateBaseClasses = true
doctrine.generate_models_options.baseClassPrefix = "Base_"
doctrine.generate_models_options.baseClassesDirectory = 
doctrine.generate_models_options.classPrefixFiles = false
doctrine.generate_models_options.classPrefix = "Model_"

Фрагмент моего doctrine.php

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->getBootstrap()->bootstrap('doctrine');
$config = $application->getOption('doctrine');  
$cli = new Doctrine_Cli($config);
$cli->run($_SERVER['argv']);

1 Ответ

1 голос
/ 30 сентября 2010

Боюсь, это невозможно с помощью опций application.ini.Самым простым решением здесь является расширение Doctrine_Cli, которое выполняет работу CLI.

Самое простое, не значит лучшее.

Вы смотрели на учение Беберлея в мастер - GitHub ?

Вы можете создатьпользовательский поставщик Zend Tool.

...