patches/PersistenceCreator.php
author Markus Broeker<broeker.markus@googlemail.com>
Sun, 14 Feb 2016 14:26:01 +0100
changeset 35 e21fb19dc319
parent 33 5cb77e9211d8
child 37 f4fce35327ff
permissions -rw-r--r--
Smarty Lizenz Datei hinzu gefügt
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     1
<?php
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     2
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     3
/**
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     4
 * PersistenceCreator for the BFW Framework
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     5
 *
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     6
 * @copyright Copyright(C) 2016 4customers
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     7
 * @author    Markus Bröker<mbroeker@4customers.de>
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     8
 */
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
     9
define("VERSION", "0.1");
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    10
require_once '../config/config.php';
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    11
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    12
$header = '<?php
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    13
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    14
/**
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    15
 * Entities for The BFW Framework
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    16
 *
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    17
 * @copyright Copyright(C) 2016 4customers
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    18
 * @author    Markus Bröker<mbroeker@4customers.de>
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    19
 */
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    20
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    21
namespace bfw\entities\core;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    22
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    23
use bfw\core\Entity;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    24
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    25
/**
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    26
';
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    27
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    28
$sql = "SHOW TABLES";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    29
$db = bfw\database\Database::getInstance();
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    30
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    31
$rows = $db->query($sql);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    32
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    33
foreach ($rows as $row) {
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    34
    foreach ($row as $name) {
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    35
        $fields = $db->query(sprintf("DESCRIBE %s", $name));
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    36
        $className = $name;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    37
        $className = preg_replace('/^t_([a-z])/e', 'strtoupper("T$1")', $className);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    38
        $className = preg_replace('/^r_([a-z])/e', 'strtoupper("R$1")', $className);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    39
        $className = preg_replace('/_([a-z])/e', 'strtoupper("$1")', $className);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    40
        $filename = sprintf("%s/classes/bfw/entities/core/%s.php", BFW_PATH, $className);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    41
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    42
        $handle = fopen($filename, "w+");
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    43
        $content = $header;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    44
        foreach ($fields as $field) {
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    45
            if ($field['Field'] != 'id') {
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    46
                $methodName = ucfirst($field['Field']);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    47
                $methodName = preg_replace('/_([a-z])/e', 'strtoupper("$1")', $methodName);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    48
                $type = substr($field['Type'], 0, strpos($field['Type'], '('));
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    49
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    50
                switch ($type) {
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    51
                    case 'int':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    52
                    case 'bigint':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    53
                    case 'smallint':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    54
                        $type = "int";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    55
                        break;
33
5cb77e9211d8 Default String für den Creator
Markus Bröker<broeker.markus@googlemail.com>
parents: 30
diff changeset
    56
                    case 'bool':
30
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    57
                    case 'tinyint':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    58
                        $type = "bool";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    59
                        break;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    60
                    case 'real':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    61
                    case 'float':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    62
                        $type = "float";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    63
                        break;
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    64
                    case 'varchar':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    65
                    case 'text':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    66
                    case 'char':
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    67
                        $type = "string";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    68
                        break;
33
5cb77e9211d8 Default String für den Creator
Markus Bröker<broeker.markus@googlemail.com>
parents: 30
diff changeset
    69
                    default: 
5cb77e9211d8 Default String für den Creator
Markus Bröker<broeker.markus@googlemail.com>
parents: 30
diff changeset
    70
                        $type = "string";
30
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    71
                }
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    72
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    73
                $content .= sprintf(" * @method %s get%s()\n", $type, $methodName);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    74
                $content .= sprintf(" * @method set%s(\$%s)\n", $methodName, $type);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    75
            }
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    76
        }
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    77
        $content .= "*/\n";
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    78
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    79
        $content .= sprintf("class %s extends Entity {\n", $className);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    80
        $content .= sprintf("    public function __construct() {\n");
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    81
        $content .= sprintf("        parent::__construct('%s');\n", $name);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    82
        $content .= sprintf("    }\n");
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    83
        $content .= sprintf("}\n");
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    84
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    85
        fwrite($handle, $content);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    86
        fclose($handle);
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    87
    }
5751ca5a55c0 Richtiges Persistence Framework mit echten Gettern und Settern + Creator
Markus Bröker<broeker.markus@googlemail.com>
parents:
diff changeset
    88
}