Schema.php 2.62 KB
Newer Older
1 2
<?php
/*
Jonathan.Wage's avatar
Jonathan.Wage committed
3
 * $Id: Schema.php 1838 2007-06-26 00:58:21Z nicobn $
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.phpdoctrine.com>.
 */

/**
Jonathan.Wage's avatar
Jonathan.Wage committed
23
 * class Doctrine_Import_Schema
24 25 26 27 28 29 30 31 32 33 34 35
 *
 * Different methods to import a XML schema. The logic behind using two different
 * methods is simple. Some people will like the idea of producing Doctrine_Record
 * objects directly, which is totally fine. But in fast and growing application,
 * table definitions tend to be a little bit more volatile. importArr() can be used
 * to output a table definition in a PHP file. This file can then be stored 
 * independantly from the object itself.
 *
 * @package     Doctrine
 * @category    Object Relational Mapping
 * @link        www.phpdoctrine.com
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
Jonathan.Wage's avatar
Jonathan.Wage committed
36
 * @version     $Revision: 1838 $
37
 * @author      Nicolas Bérard-Nault <nicobn@gmail.com>
Jonathan.Wage's avatar
Jonathan.Wage committed
38
 * @author      Jonathan H. Wage <jonwage@gmail.com>
39
 */
Jonathan.Wage's avatar
Jonathan.Wage committed
40
class Doctrine_Import_Schema
41 42
{
    /**
Jonathan.Wage's avatar
Jonathan.Wage committed
43
     * import
44
     *
Jonathan.Wage's avatar
Jonathan.Wage committed
45
     * A method to import a Schema and translate it into a Doctrine_Record object
46
     *
nicobn's avatar
nicobn committed
47 48
     * @param string $schema       The file containing the XML schema
     * @param string $directory    The directory where the Doctrine_Record classes will
49 50
     *                             be written
     */
Jonathan.Wage's avatar
Jonathan.Wage committed
51
    public function import($schema, $directory)
52
    {
zYne's avatar
zYne committed
53 54
        $builder = new Doctrine_Import_Builder();
        $builder->setTargetPath($directory);
55

Jonathan.Wage's avatar
Jonathan.Wage committed
56
        $arr = $this->importSchema($schema);
57
       
nicobn's avatar
nicobn committed
58
        foreach ($arr as $name => $columns) {
59 60 61 62
            $options['className'] = $name;
            $options['fileName'] = $directory.DIRECTORY_SEPARATOR.$name.'.class.php';
            
            $builder->buildRecord($options, $columns, array());
63 64
        }
    }
Jonathan.Wage's avatar
Jonathan.Wage committed
65
}