Use schema in shell

67 views Asked by At

In a plugin context, I'm writing a shell subcommand and I need to call a public method of the schema:

// app\Plugin\FooManager\Config\Schema\schema.php
App::uses('BaseSchema', 'FooManager.Config/Schema');
class FooManagerSchema extends BaseSchema {
    public function getLocalisableValues() {
    }
}

As usual, I can't figure out the syntax.

// app\Plugin\FooManager\Console\Command\DevShell.php
class DevShell extends AppShell {
    public function i18n_dump_database_values() {
        $schema = ????????;
        $schema->getLocalisableValues();
    }
}

How can I load an instance of FooManagerSchema into $schema?

1

There are 1 answers

0
Álvaro González On BEST ANSWER

Shameful cakeless workaround to make it work at any cost (please don't try this at home, kittens can be hurt):

// app\Plugin\FooManager\Console\Command\DevShell.php
class DevShell extends AppShell {
    public function i18n_dump_database_values() {
        // Ugly (and will possibly break things):
        include_once(__DIR__ . '/../../../../../lib/Cake/Model/CakeSchema.php');
        include_once(__DIR__ . '/../../Config/Schema/schema.php');
        $schema = new FooManagerSchema();

        $schema->getLocalisableValues();
    }
}