本文整理汇总了PHP中XmlToAppData::setGeneratorConfig方法的典型用法代码示例。如果您正苦于以下问题:PHP XmlToAppData::setGeneratorConfig方法的具体用法?PHP XmlToAppData::setGeneratorConfig怎么用?PHP XmlToAppData::setGeneratorConfig使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlToAppData
的用法示例。
在下文中一共展示了XmlToAppData::setGeneratorConfig方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getDatabasesFromSchema
protected function getDatabasesFromSchema(\SplFileInfo $file)
{
$transformer = new \XmlToAppData(null, null, 'UTF-8');
$config = new \QuickGeneratorConfig();
if (file_exists($propelIni = $this->getContainer()->getParameter('kernel.root_dir') . '/config/propel.ini')) {
foreach ($this->getProperties($propelIni) as $key => $value) {
if (0 === strpos($key, 'propel.')) {
$newKey = substr($key, strlen('propel.'));
$j = strpos($newKey, '.');
while (false !== $j) {
$newKey = substr($newKey, 0, $j) . ucfirst(substr($newKey, $j + 1));
$j = strpos($newKey, '.');
}
$config->setBuildProperty($newKey, $value);
}
}
}
$transformer->setGeneratorConfig($config);
return $transformer->parseFile($file->getPathName())->getDatabases();
}
示例2: getDatabase
public function getDatabase()
{
if (null === $this->database) {
$xtad = new XmlToAppData($this->getPlatform());
$xtad->setGeneratorConfig($this->getConfig());
$this->database = $xtad->parseString($this->schema)->getDatabase();
}
return $this->database;
}
示例3: testSetPackageOverridesNamespaceAutoPackage
public function testSetPackageOverridesNamespaceAutoPackage()
{
$schema = <<<EOF
<database name="DB" namespace="NS1">
<table name="table" namespace="NS2" package="foo">
<column name="id" primaryKey="true" />
<column name="title1" type="VARCHAR" />
</table>
</database>
EOF;
$config = new GeneratorConfig();
$config->setBuildProperties(array('propel.namespace.autoPackage' => 'true'));
$xmlToAppData = new XmlToAppData(new DefaultPlatform());
$xmlToAppData->setGeneratorConfig($config);
$table = $xmlToAppData->parseString($schema)->getDatabase('DB')->getTable('table');
$this->assertEquals('foo', $table->getPackage());
}
示例4: loadDataModels
/**
* Gets all matching XML schema files and loads them into data models for class.
* @return void
*/
protected function loadDataModels()
{
$ads = array();
$totalNbTables = 0;
$this->log('Loading XML schema files...');
// Get all matched files from schemaFilesets
foreach ($this->schemaFilesets as $fs) {
$ds = $fs->getDirectoryScanner($this->project);
$srcDir = $fs->getDir($this->project);
$dataModelFiles = $ds->getIncludedFiles();
sort($dataModelFiles);
$defaultPlatform = $this->getGeneratorConfig()->getConfiguredPlatform();
// Make a transaction for each file
foreach ($dataModelFiles as $dmFilename) {
$this->log("Processing: " . $dmFilename, Project::MSG_VERBOSE);
$xmlFile = new PhingFile($srcDir, $dmFilename);
$dom = new DomDocument('1.0', 'UTF-8');
$dom->load($xmlFile->getAbsolutePath());
// modify schema to include any external schemas (and remove the external-schema nodes)
$this->includeExternalSchemas($dom, $srcDir);
// normalize (or transform) the XML document using XSLT
if ($this->getGeneratorConfig()->getBuildProperty('schemaTransform') && $this->xslFile) {
$this->log("Transforming " . $dmFilename . " using stylesheet " . $this->xslFile->getPath(), Project::MSG_VERBOSE);
if (!class_exists('XSLTProcessor')) {
$this->log("Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.", Project::MSG_ERR);
} else {
// normalize the document using normalizer stylesheet
$xslDom = new DomDocument('1.0', 'UTF-8');
$xslDom->load($this->xslFile->getAbsolutePath());
$xsl = new XsltProcessor();
$xsl->importStyleSheet($xslDom);
$dom = $xsl->transformToDoc($dom);
}
}
// validate the XML document using XSD schema
if ($this->validate && $this->xsdFile) {
$this->log(" Validating XML using schema " . $this->xsdFile->getPath(), Project::MSG_VERBOSE);
if (!$dom->schemaValidate($this->xsdFile->getAbsolutePath())) {
throw new EngineException("XML schema file (" . $xmlFile->getPath() . ") does not validate. See warnings above for reasons validation failed (make sure error_reporting is set to show E_WARNING if you don't see any).", $this->getLocation());
}
}
$xmlParser = new XmlToAppData($defaultPlatform, $this->getTargetPackage(), $this->dbEncoding);
$xmlParser->setGeneratorConfig($this->getGeneratorConfig());
$ad = $xmlParser->parseString($dom->saveXML(), $xmlFile->getAbsolutePath());
$nbTables = $ad->getDatabase(null, false)->countTables();
$totalNbTables += $nbTables;
$this->log(sprintf(' %d tables processed successfully', $nbTables), Project::MSG_VERBOSE);
$ad->setName($dmFilename);
$ads[] = $ad;
}
$this->log(sprintf('%d tables found in %d schema files.', $totalNbTables, count($dataModelFiles)));
}
if (empty($ads)) {
throw new BuildException("No schema files were found (matching your schema fileset definition).");
}
foreach ($ads as $ad) {
// map schema filename with database name
$this->dataModelDbMap[$ad->getName()] = $ad->getDatabase(null, false)->getName();
}
if (count($ads) > 1 && $this->packageObjectModel) {
$ad = $this->joinDataModels($ads);
$this->dataModels = array($ad);
} else {
$this->dataModels = $ads;
}
foreach ($this->dataModels as &$ad) {
$ad->doFinalInitialization();
}
if ($this->validate) {
foreach ($this->dataModels as $dataModel) {
$validator = new PropelSchemaValidator($dataModel);
if (!$validator->validate()) {
throw new EngineException(sprintf("The database schema contains errors:\n - %s", join("\n - ", $validator->getErrors())));
}
}
}
$this->dataModelsLoaded = true;
}
示例5: getModels
protected function getModels($databaseManager, $verbose = false)
{
Phing::startup();
// required to locate behavior classes...
$schemas = sfFinder::type('file')->name('*schema.xml')->follow_link()->in(sfConfig::get('sf_config_dir'));
if (!$schemas) {
throw new sfCommandException('You must create a schema.yml or schema.xml file.');
}
$ads = array();
foreach ($schemas as $schema) {
if ($verbose) {
$this->logSection('schema', sprintf(' Parsing schema "%s"', $schema), null, 'COMMENT');
}
$dom = new DomDocument('1.0', 'UTF-8');
$dom->load($schema);
//$this->includeExternalSchemas($dom, sfConfig::get('sf_config_dir'));
$xmlParser = new XmlToAppData(new DefaultPlatform(), '');
$generatorConfig = $this->getGeneratorConfig();
$generatorConfig->setBuildConnections($this->getConnections($databaseManager));
$xmlParser->setGeneratorConfig($generatorConfig);
$ad = $xmlParser->parseString($dom->saveXML(), $schema);
$ads[] = $ad;
$nbTables = $ad->getDatabase(null, false)->countTables();
if ($verbose) {
$this->logSection('schema', sprintf(' %d tables processed successfully', $nbTables), null, 'COMMENT');
}
}
if (count($ads) > 1) {
$ad = array_shift($ads);
$ad->joinAppDatas($ads);
//$ad = $this->joinDataModels($ads);
//$this->dataModels = array($ad);
} else {
$ad = $ads[0];
}
$ad->doFinalInitialization();
return $ad;
}
示例6: getDatabase
public function getDatabase()
{
if (null === $this->database) {
$xtad = new XmlToAppData($this->getPlatform());
if (null !== $this->config) {
$xtad->setGeneratorConfig($this->config);
}
$appData = $xtad->parseString($this->schema);
$this->database = $appData->getDatabase();
// does final initialization
}
return $this->database;
}