本文整理匯總了PHP中Doctrine_Import_Schema::setOptions方法的典型用法代碼示例。如果您正苦於以下問題:PHP Doctrine_Import_Schema::setOptions方法的具體用法?PHP Doctrine_Import_Schema::setOptions怎麽用?PHP Doctrine_Import_Schema::setOptions使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Doctrine_Import_Schema
的用法示例。
在下文中一共展示了Doctrine_Import_Schema::setOptions方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
$this->logSection('doctrine', 'generating model classes');
$config = $this->getCliConfig();
$this->_checkForPackageParameter($config['yaml_schema_path']);
$tmpPath = sfConfig::get('sf_cache_dir') . DIRECTORY_SEPARATOR . 'tmp';
if (!file_exists($tmpPath)) {
Doctrine_Lib::makeDirectories($tmpPath);
}
$plugins = $this->configuration->getPlugins();
foreach ($this->configuration->getAllPluginPaths() as $plugin => $path) {
if (!in_array($plugin, $plugins)) {
continue;
}
$schemas = sfFinder::type('file')->name('*.yml')->in($path . '/config/doctrine');
foreach ($schemas as $schema) {
$tmpSchemaPath = $tmpPath . DIRECTORY_SEPARATOR . $plugin . '-' . basename($schema);
$models = Doctrine_Parser::load($schema, 'yml');
if (!isset($models['package'])) {
$models['package'] = $plugin . '.lib.model.doctrine';
$models['package_custom_path'] = $path . '/lib/model/doctrine';
}
Doctrine_Parser::dump($models, 'yml', $tmpSchemaPath);
}
}
$options = array('generateBaseClasses' => true, 'generateTableClasses' => true, 'packagesPath' => sfConfig::get('sf_plugins_dir'), 'packagesPrefix' => 'Plugin', 'suffix' => '.class.php', 'baseClassesDirectory' => 'base', 'baseClassName' => 'sfDoctrineRecord');
$options = array_merge($options, sfConfig::get('doctrine_model_builder_options', array()));
$import = new Doctrine_Import_Schema();
$import->setOptions($options);
$import->importSchema(array($tmpPath, $config['yaml_schema_path']), 'yml', $config['models_path']);
}
示例2: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
$this->logSection('doctrine', 'generating model classes');
$config = $this->getCliConfig();
$builderOptions = $this->configuration->getPluginConfiguration('sfDoctrinePlugin')->getModelBuilderOptions();
$stubFinder = sfFinder::type('file')->prune('base')->name('*' . $builderOptions['suffix']);
$before = $stubFinder->in($config['models_path']);
$schema = $this->prepareSchemaFile($config['yaml_schema_path']);
$import = new Doctrine_Import_Schema();
$import->setOptions($builderOptions);
$import->importSchema($schema, 'yml', $config['models_path']);
// markup base classes with magic methods
foreach (sfYaml::load($schema) as $model => $definition) {
// Start OrangeHRM Modified Section
$subPackageName = $this->getSubPackageName($definition);
// End OrangeHRM Modified Section
$file = sprintf('%s%s/%s/Base%s%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $builderOptions['baseClassesDirectory'], $model, $builderOptions['suffix']);
$code = file_get_contents($file);
// introspect the model without loading the class
if (preg_match_all('/@property (\\w+) \\$(\\w+)/', $code, $matches, PREG_SET_ORDER)) {
$properties = array();
foreach ($matches as $match) {
$properties[$match[2]] = $match[1];
}
$typePad = max(array_map('strlen', array_merge(array_values($properties), array($model))));
$namePad = max(array_map('strlen', array_keys(array_map(array('sfInflector', 'camelize'), $properties))));
$setters = array();
$getters = array();
foreach ($properties as $name => $type) {
$camelized = sfInflector::camelize($name);
$collection = 'Doctrine_Collection' == $type;
$getters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Returns the current record\'s "%s" %s', $type, 'get', $camelized . '()', $name, $collection ? 'collection' : 'value');
$setters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Sets the current record\'s "%s" %s', $model, 'set', $camelized . '()', $name, $collection ? 'collection' : 'value');
}
// use the last match as a search string
$code = str_replace($match[0], $match[0] . PHP_EOL . ' * ' . PHP_EOL . ' * ' . implode(PHP_EOL . ' * ', array_merge($getters, $setters)), $code);
// Start OrangeHRM Modified Section
$tokens = array('##SUBPACKAGE##' => $subPackageName);
$code = str_replace(array_keys($tokens), array_values($tokens), $code);
// End OrangeHRM Modified Section
file_put_contents($file, $code);
}
}
$properties = parse_ini_file(sfConfig::get('sf_config_dir') . '/properties.ini', true);
$tokens = array('##PACKAGE##' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', '##SUBPACKAGE##' => 'model', '##NAME##' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here', ' <##EMAIL##>' => '', "{\n\n}" => "{\n}\n");
// cleanup new stub classes
$after = $stubFinder->in($config['models_path']);
$this->getFilesystem()->replaceTokens(array_diff($after, $before), '', '', $tokens);
// cleanup base classes
$baseFinder = sfFinder::type('file')->name('Base*' . $builderOptions['suffix']);
$baseDirFinder = sfFinder::type('dir')->name('base');
$this->getFilesystem()->replaceTokens($baseFinder->in($baseDirFinder->in($config['models_path'])), '', '', $tokens);
$this->reloadAutoload();
}
示例3: execute
/**
* Execute task
*
* @param array $arguments Task arguments [optional]
* @param array $options Task options [optional]
* @return void
*/
protected function execute($arguments = array(), $options = array())
{
$this->logSection('doctrine', 'generating model classes');
$config = $this->getCliConfig();
$builderOptions = $this->configuration->getPluginConfiguration('sfDoctrinePlugin')->getModelBuilderOptions();
$finder = sfFinder::type('file')->prune('base')->name('*' . $builderOptions['suffix']);
$before = $finder->in($config['models_path']);
$schema = $this->prepareSchemaFile($config['yaml_schema_path']);
$import = new Doctrine_Import_Schema();
$import->setOptions($builderOptions);
$import->importSchema($schema, 'yml', $config['models_path']);
$base = $builderOptions['baseClassesDirectory'];
$suff = $builderOptions['suffix'];
$src = array('##PACKAGE##', '##SUBPACKAGE##', '##NAME##', ' <##EMAIL##>');
// markup base classes with magic methods
foreach (sfYaml::load($schema) as $model => $definition) {
$package = isset($definition['package']) ? substr($definition['package'], 0, strpos($definition['package'], '.')) : '';
$basePath = $config['models_path'] . ($package ? '/' . $package : '') . '/';
$file = $basePath . $base . '/Base' . $model . $suff;
$code = file_get_contents($file);
// introspect the model without loading the class
if (preg_match_all('/@property (\\w+) \\$(\\w+)/', $code, $matches, PREG_SET_ORDER)) {
$properties = array();
foreach ($matches as $match) {
$properties[$match[2]] = $match[1];
}
$typePad = max(array_map('strlen', array_merge(array_values($properties), array($model))));
$namePad = max(array_map('strlen', array_keys(array_map(array('sfInflector', 'camelize'), $properties))));
$setters = array();
$getters = array();
foreach ($properties as $name => $type) {
$camelized = sfInflector::camelize($name);
$collection = 'Doctrine_Collection' == $type;
$getters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Returns the current record\'s "%s" %s', $type, 'get', $camelized . '()', $name, $collection ? 'collection' : 'value');
$setters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Sets the current record\'s "%s" %s', $model, 'set', $camelized . '()', $name, $collection ? 'collection' : 'value');
}
$dst = array(dinGeneratorSigner::getProjectName(), 'lib.model.doctrine' . ($package ? '.' . $package : '') . '.base', dinGeneratorSigner::getAuthor(), '');
$code = str_replace($match[0], $match[0] . PHP_EOL . ' * ' . PHP_EOL . ' * ' . implode(PHP_EOL . ' * ', array_merge($getters, $setters)), $code);
$code = str_replace($src, $dst, $code);
file_put_contents($file, $code);
}
$this->replaceLibClasses($basePath, $model, $package, $suff);
if ($package) {
$basePath = $this->configuration->getPluginConfiguration($package)->getRootDir() . '/lib/model/doctrine/';
$this->replaceLibClasses($basePath, $model, $package, $suff, true);
}
}
$this->reloadAutoload();
}
示例4: testClassExistsAfterImport
public function testClassExistsAfterImport()
{
Doctrine_Core::setModelsDirectory(dirname(__FILE__) . '/DC95/models');
$import = new Doctrine_Import_Schema();
$import->setOptions(array('pearStyle' => true, 'baseClassesDirectory' => null, 'baseClassPrefix' => 'Base_', 'classPrefix' => 'DC95_', 'classPrefixFiles' => true));
$modelsPath = dirname(__FILE__) . '/DC95/models';
$import->importSchema(dirname(__FILE__) . '/DC95/schema.yml', 'yml', $modelsPath);
/*
$this->assertTrue(file_exists($modelsPath . '/DC95/Base/Article.php'));
$this->assertTrue(file_exists($modelsPath . '/DC95/Base/Article/Category.php'));
$this->assertTrue(file_exists($modelsPath . '/DC95/Article.php'));
$this->assertTrue(file_exists($modelsPath . '/DC95/Article/Category.php'));
*/
Doctrine_Core::setModelsDirectory(null);
Doctrine_Lib::removeDirectories(dirname(__FILE__) . '/DC95/models');
}
示例5: generateModelsFromYaml
/**
* Generate a yaml schema file from an existing directory of models
*
* @param string $yamlPath Path to your yaml schema files
* @param string $directory Directory to generate your models in
* @param array $options Array of options to pass to the schema importer
* @return void
*/
public static function generateModelsFromYaml($yamlPath, $directory, $options = array())
{
$import = new Doctrine_Import_Schema();
$import->setOptions($options);
return $import->importSchema($yamlPath, 'yml', $directory);
}
示例6: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
$this->logSection('doctrine', 'generating model classes');
$config = $this->getCliConfig();
$builderOptions = $this->configuration->getPluginConfiguration('sfDoctrinePlugin')->getModelBuilderOptions();
$stubFinder = sfFinder::type('file')->prune('base')->name('*' . $builderOptions['suffix']);
$before = $stubFinder->in($config['models_path']);
$schema = $this->prepareSchemaFile($config['yaml_schema_path']);
$import = new Doctrine_Import_Schema();
$import->setOptions($builderOptions);
$import->importSchema($schema, 'yml', $config['models_path']);
$listFiles = array();
$listDir = array();
$bI = array('package' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', 'subpackage' => 'model', 'author' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here');
$baseRecordFile = sprintf("%s/BaseDoctrineRecord.class.php", $config['models_path']);
$baseRecordFileContent = <<<EOF
<?php
/**
* Base doctrin record.
*
* @package {$bI['package']}
* @subpackage {$bI['subpackage']}
* @author {$bI['author']}
*/
##class## BaseDoctrineRecord extends sfPostgresDoctrineRecord
{
}
EOF;
if (!file_exists($baseRecordFile)) {
file_put_contents($baseRecordFile, str_replace('##class##', 'class', $baseRecordFileContent));
}
// markup base classes with magic methods
foreach (sfYaml::load($schema) as $model => $definition) {
$file = sprintf('%s%s/%s/Base%s%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $builderOptions['baseClassesDirectory'], $model, $builderOptions['suffix']);
$code = file_get_contents($file);
// introspect the model without loading the class
if (preg_match_all('/@property (\\w+) \\$(\\w+)/', $code, $matches, PREG_SET_ORDER)) {
$properties = array();
foreach ($matches as $match) {
$properties[$match[2]] = $match[1];
}
$typePad = max(array_map('strlen', array_merge(array_values($properties), array($model))));
$namePad = max(array_map('strlen', array_keys(array_map(array('sfInflector', 'camelize'), $properties))));
$setters = array();
$getters = array();
foreach ($properties as $name => $type) {
$camelized = sfInflector::camelize($name);
$collection = 'Doctrine_Collection' == $type;
$getters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Returns the current record\'s "%s" %s', $type, 'get', $camelized . '()', $name, $collection ? 'collection' : 'value');
$setters[] = sprintf('@method %-' . $typePad . 's %s%-' . ($namePad + 2) . 's Sets the current record\'s "%s" %s', $model, 'set', $camelized . '()', $name, $collection ? 'collection' : 'value');
}
// use the last match as a search string
$code = str_replace($match[0], $match[0] . PHP_EOL . ' * ' . PHP_EOL . ' * ' . implode(PHP_EOL . ' * ', array_merge($getters, $setters)), $code);
$newfile = sprintf('%s%s%s/%s/Base%s%s', $config['models_path'], isset($definition['package']) && false !== stripos($definition['package'], 'plugin') && 0 !== stripos($definition['package'], 'plugin') ? '/plugins' : '/project', isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $builderOptions['baseClassesDirectory'], $model, $builderOptions['suffix']);
$newtablefile = sprintf('%s%s%s/%sTable%s', $config['models_path'], isset($definition['package']) && false !== stripos($definition['package'], 'plugin') && 0 !== stripos($definition['package'], 'plugin') ? '/plugins' : '/project', isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $model, $builderOptions['suffix']);
$newdir = sprintf('%s%s%s/%s', $config['models_path'], isset($definition['package']) && false !== stripos($definition['package'], 'plugin') && 0 !== stripos($definition['package'], 'plugin') ? '/plugins' : '/project', isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $builderOptions['baseClassesDirectory']);
if (!file_exists($newdir)) {
mkdir($newdir, 0777, true);
}
$listDir[sprintf('%s%s/%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $builderOptions['baseClassesDirectory'])] = true;
$listDir[sprintf('%s%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '')] = true;
if (!file_exists(str_replace(sprintf('%s/Base', $builderOptions['baseClassesDirectory']), '', $newfile))) {
$listFiles[sprintf('%s%s/%s%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $model, $builderOptions['suffix'])] = str_replace(sprintf('%s/Base', $builderOptions['baseClassesDirectory']), '', $newfile);
} else {
unlink(sprintf('%s%s/%s%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $model, $builderOptions['suffix']));
}
if (!file_exists($newtablefile)) {
$listFiles[sprintf('%s%s/%sTable%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $model, $builderOptions['suffix'])] = $newtablefile;
} else {
unlink(sprintf('%s%s/%sTable%s', $config['models_path'], isset($definition['package']) ? '/' . substr($definition['package'], 0, strpos($definition['package'], '.')) : '', $model, $builderOptions['suffix']));
}
$code = str_replace(" extends sfDoctrineRecord", " extends BaseDoctrineRecord", $code);
file_put_contents($newfile, $code);
unlink($file);
}
}
$properties = parse_ini_file(sfConfig::get('sf_config_dir') . '/properties.ini', true);
$tokens = array('##PACKAGE##' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', '##SUBPACKAGE##' => 'model', '##NAME##' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here', ' <##EMAIL##>' => '', "{\n\n}" => "{\n}\n");
// cleanup new stub classes
$after = $stubFinder->in($config['models_path']);
$this->getFilesystem()->replaceTokens(array_diff($after, $before), '', '', $tokens);
// cleanup base classes
$baseFinder = sfFinder::type('file')->name('Base*' . $builderOptions['suffix']);
$baseDirFinder = sfFinder::type('dir')->name('base');
$this->getFilesystem()->replaceTokens($baseFinder->in($baseDirFinder->in($config['models_path'])), '', '', $tokens);
// cleanup new table classes
$tableFinder = sfFinder::type('file')->prune('base')->name('*Table' . $builderOptions['suffix']);
foreach (array_diff($tableFinder->in($config['models_path']), $before) as $file) {
$contents = file_get_contents($file);
file_put_contents($file, sfToolkit::stripComments($contents));
}
foreach ($listFiles as $old => $new) {
rename($old, $new);
//.........這裏部分代碼省略.........