/
generator.php
106 lines (85 loc) · 2.9 KB
/
generator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
/**
* Created by PhpStorm.
* User: Kévin
* Date: 12/12/2015
* Time: 13:51
*/
require_once 'vendor/autoload.php';
use App\Orm\Orm;
define('LOG_ACTIVE', true);
function do_tabs($tabs)
{
$ret = "";
for ($i= 0; $i < $tabs; $i++) {
$ret .= "\t";
}
return $ret;
}
$host = $argv[1];
$user = $argv[2];
$password = $argv[3];
$db = $argv[4];
$tableName = $argv[5];
$className = $argv[6];
Orm::init($host, $db, $user, $password);
// Do some magic here
$fields = Orm::getTableColumns($tableName);
$tabs = 1;
$code = "<?php\n\n";
$code .= "namespace App\\Entity;\n\n";
$code .= "use App\\Orm\\QueryManager;\n\n";
$code .= "class $className extends QueryManager\n{\n";
$code .= do_tabs($tabs) . "/** PROPERTIES */\n";
$code .= do_tabs($tabs) . 'private $tableName = "'.$tableName.'";'."\n";
foreach ($fields as $field)
{
if (strtolower($field) == 'id')
continue;
$code .= do_tabs($tabs) . 'private $'.$field.";\n";
}
$code .= do_tabs($tabs) . 'private $isUnique = "' . Orm::getUniqueColumnName($tableName) . '";'."\n";
$code .= "\n".do_tabs($tabs) . "/** SETTER */\n";
foreach ($fields as $field)
{
if (strtolower($field) == 'id')
continue;
$code .= do_tabs($tabs) . 'public function set'.ucfirst($field).'($'.$field.")\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . '$this->'.$field.' = $'.$field.";\n";
$code .= do_tabs($tabs) . "}\n\n";
}
$code .= do_tabs($tabs) . "/** GETTER */\n";
foreach ($fields as $field) {
if (strtolower($field) == 'id')
continue;
$code .= do_tabs($tabs) . 'public function get'.ucfirst($field)."()\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . 'return $this->'.$field.";\n";
$code .= do_tabs($tabs) . "}\n\n";
}
$code .= do_tabs($tabs) . "/** ORM NEEDLE */\n";
$code .= do_tabs($tabs) . "public function getTableName()\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . 'return $this->tableName'.";\n";
$code .= do_tabs($tabs) . "}\n\n";
$code .= do_tabs($tabs) . "public function getIsUnique()\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . 'return $this->isUnique'.";\n";
$code .= do_tabs($tabs) . "}\n\n";
$code .= do_tabs($tabs) . "/** SAVE */\n";
$code .= do_tabs($tabs) . "public function save()\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . '$this->persist($this)'.";\n";
$code .= do_tabs($tabs) . "}\n\n";
$code .= do_tabs($tabs) . "/** METHODS */\n";
foreach ($fields as $field) {
if (strtolower($field) == 'password')
continue;
$code .= do_tabs($tabs) . 'public function getBy'.ucfirst($field).'($'.$field.')'."\n";
$code .= do_tabs($tabs) . "{\n";
$code .= do_tabs($tabs+1) . 'return $this->select($this->tableName)->where(\''.$field.' = \\\'\'.$'.$field.'.\'\\\'\')->execute()'.";\n";
$code .= do_tabs($tabs) . "}\n\n";
}
$code .= "}\n";
file_put_contents("src/Entity/".$className.".php", $code);