FREE PHP Tool: Class File Generator
Want to quickly generate a class file for a table in your database? This script takes your connection information, the name of the table, the name of your class and gives you a formatted class file you can download and use in a snap. Features include the ability to add get/set methods for each field, a simple debugger, and a print object function. It’s available under the GNU public license.
Download the Class File Generator
The Source Code
<?php
/*********
* File: index.php
* Date: 4.5.2012
* Author: design1online.com, LLC
* Purpose: generate a oop class file for a mysql database table
*********/
DEFINE("AUTHOR", "Design1online.com, LLC");
if ($_POST['generate'])
{
$fields = array();
$keys = array();
if (!$_POST['host'])
$_POST['host'] = "localhost";
//connect to the database
mysql_connect ($_POST['host'], $_POST['username'], $_POST['pass'])
or die ('Cannot connect to the database: ' . mysql_error());
mysql_select_db ($_POST['db'])
or die ('Cannot select database: ' . mysql_error());
$table = mysql_query("SHOW columns FROM {$_POST['table']}")
or die ('Cannot load table: ' . mysql_error());
//load the table fields and keys
while ($schema = mysql_fetch_assoc($table))
{
$field = array(
"name" => $schema['Field'],
"type" => $schema['Type']
);
if ($schema['Key'])
array_push($keys, $field);
array_push($fields, $field);
}
$filename = ($_POST['name']) ? $_POST['name'] : $_POST['table'];
//build the file
$file = "/**********
* File: $filename.class.php
* Author: " . AUTHOR . "
* Created: " . date('n.j.Y g:ia') . "
* Free PHP Class Generator: http://design1online.com/phpclassfilegenerator
**********/
class $filename";
if ($_POST['extends'])
$file .= " extends {$_POST['extends']}";
$file .= " {nn";
if ($_POST['vars'])
{
foreach ($fields as $index => $field)
$file .= "tvar $" . $field['name'] . ";n";
}
if ($_POST['debug'])
$file .= "tvar $debugger = false;n";
$file .= "nt/*********
t* Purpose: Default constructor
t* Preconditions: None
t* Postconditions: None
t*********/
tfunction $filename(";
foreach ($keys as $index => $field)
$keynames[] = $field['name'];
//build the constructor parameters
if ($_POST['constructor'])
$file .= "$" . implode(", $", $keynames);
$file .= ") {n";
if ($_POST['debug'])
$file .= "nttif ($this->debugger)ntttecho "DEBUGGER: initializing $filename object";n";
//build the constructor
if ($_POST['constructor'])
{
foreach ($keys as $index => $field)
{
$file .= "nttif (!$" . $field['name'];
if (strpos($field['type'], "int") !== false || strpos($field['type'], "decimal") !== false
|| strpos($field['type'], "float") !== false || strpos($field['type'], "double") !== false
|| strpos($field['type'], "real") !== false || strpos($field['type'], "bit") !== false
|| strpos($field['type'], "bit") !== false || strpos($field['type'], "bool") !== false
|| strpos($field['type'], "serial") !== false)
$file .= " || !is_numeric($" . $field['name'] . ")";
$file .= ")ntttreturn;n";
}
$file .= "ntt$result = mysql_query("SELECT * FROM {$_POST['table']} WHERE ";
$append = false;
foreach ($keys as $index => $field)
{
if ($append)
$file .= " AND ";
$file .= "{$field['name']} = '$" . $field['name'] . "'";
if (!$append)
$append = true;
}
$file .= "")ntttor die('Cannot init constructor in $filename.class.php: ' . mysql_error());nntt$row = mysql_fetch_assoc($result);n";
foreach ($fields as $index => $value)
{
$file .= "ntt$this->{$value['name']} = ";
if (strpos($value['type'], "varchar") !== false || strpos($value['type'], "text") !== false
|| strpos($value['type'], "blob") !== false || strpos($value['type'], "enum") !== false
|| strpos($value['type'], "set") !== false || strpos($value['type'], "binary") !== false)
$file .= "stripslashes(html_entity_decode(";
$file .= "$row['{$value['name']}']";
if (strpos($value['type'], "varchar") !== false || strpos($value['type'], "text") !== false
|| strpos($value['type'], "blob") !== false || strpos($value['type'], "enum") !== false
|| strpos($value['type'], "set") !== false || strpos($value['type'], "binary") !== false)
$file .= ", ENT_QUOTES))";
$file .= ";";
}
}
$file .= "nnt} //end default constructor";
//check to see if they want the print function
if ($_POST['print'])
{
$file .= "nnt/*********
t* Purpose: Display the object
t* Preconditions: None
t* Postconditions: None
t*********/
tfunction print() {";
if ($_POST['debug'])
$file .= "nnttif ($this->debugger)ntttecho "DEBUGGER: printing $filename object";";
$file .= "nnttecho "<b>Displaying $filename Object</b><br/><br/>";
foreach ($fields as $index => $value)
$file .= "nttt{$value['name']} = $this->{$value['name']}<br/>";
$file .= "";nnt} //end print function";
}
//check to see if they want the get methods
if ($_POST['get'])
{
foreach ($fields as $index => $value)
{
$file .= "nnt/*********
t* Purpose: Get the value from the {$value['name']} field
t* Preconditions: None
t* Postconditions: {$value['name']} field value returned
t*********/
tfunction get" . ucFirst($value['name']) . "() {";
if ($_POST['debug'])
$file .= "nnttif ($this->debugger)ntttecho "DEBUGGER: calling {$filename}->get" . ucFirst($value['name']) . " method";n";
$file .= "nttreturn $this->{$value['name']};nt}";
}
}
//check to see if they want the set methods
if ($_POST['set'])
{
foreach ($fields as $index => $value)
{
$file .= "nnt/*********
t* Purpose: Set the value of the {$value['name']} field
t* Preconditions: None
t* Postconditions: object and table data set to $value
t*********/
tfunction set" . ucFirst($value['name']) . "($value) {";
if ($_POST['debug'])
$file .= "nnttif ($this->debugger)ntttecho "DEBUGGER: calling {$filename}->get" . ucFirst($value['name']) . " method";";
$file .= "nnttif (!$value)ntttreturn "Invalid value";
ttmysql_query("UPDATE {$_POST['table']} SET {$value['name']}='$value' WHERE ";
$append = false;
foreach ($keys as $index => $field)
{
if ($append)
$file .= " AND ";
$file .= "{$field['name']} = '$this->" . $field['name'] . "'";
if (!$append)
$append = true;
}
$file .= "")ntttor die('Cannot set value for {$value['name']}: ' . mysql_error());nntt$this->{$value['name']} = $value;nt}";
}
}
$file .= "nn} //end $filename.class.php";
//setup the headers so you can download the file
header('Content-type: text');
header("Content-Disposition: attachment; filename=$filename.class.php");
echo $file;
}
if (!$_POST['generate'])
{
echo "
<center>
<h1>Class File Generator</h1>
<form action="#" method="post">
<table cellpadding="2" cellspacing="2" width="80%">
<tr>
<th>MySQL Connection</th>
<th>Class Options</th>
</tr>
<tr>
<td width="50%" valign="top">
<p>Host: <input type="text" name="host" value="{$_POST['host']}" /></p>
<p>Username: <input type="text" name="username" value="{$_POST['username']}" /></p>
<p>Password: <input type="password" name="pass" value="{$_POST['pass']}" /></p>
<p>Database: <input type="text" name="db" value="{$_POST['db']}" /></p>
<p>Table: <input type="text" name="table" value="{$_POST['table']}" /></p>
<p align="center">
<input type="submit" name="generate" value="Generate Class" />
</p>
</td>
<td>
<p>
Class Name: <input type="text" name="name" value="{$_POST['name']}" />
<br/><i>tablename used by default</i>
</p>
<p>
Extends Class: <input type="text" name="extends" value="{$_POST['extends']}" />
<i>(optional)</i>
</p>
<blockquote>
<p><input type="checkbox" name="vars" checked="checked" />Include variable declarations</p>
<p><input type="checkbox" name="constructor" checked="checked" />Include default constructor</p>
<p><input type="checkbox" name="get" />Include get functions for all fields</p>
<p><input type="checkbox" name="set" />Include set functions for all fields</p>
<p><input type="checkbox" name="print" />Include print function</p>
<p><input type="checkbox" name="debug" />Include debugger</p>
</blockquote>
</td>
</tr>
</table>
<p>
<a href="http://design1online.com/downloads/classfilegenerator.zip">Download Source Code</a><br/>
<b>GNU Public License</b>
</p>
<p>
<a href="http://design1online.com">by design1online.com, LLC</a>
</p>
</form>
</center>";
