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 .= " {\n\n"; if ($_POST['vars']) { foreach ($fields as $index => $field) $file .= "\tvar $" . $field['name'] . ";\n"; } if ($_POST['debug']) $file .= "\tvar \$debugger = false;\n"; $file .= "\n\t/********* \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 .= "\n\t\tif (\$this->debugger)\n\t\t\techo \"DEBUGGER: initializing $filename object\";\n"; //build the constructor if ($_POST['constructor']) { foreach ($keys as $index => $field) { $file .= "\n\t\tif (!$" . $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 .= ")\n\t\t\treturn;\n"; } $file .= "\n\t\t\$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 .= "\")\n\t\t\tor die('Cannot init constructor in $filename.class.php: ' . mysql_error());\n\n\t\t\$row = mysql_fetch_assoc(\$result);\n"; foreach ($fields as $index => $value) { $file .= "\n\t\t\$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 .= "\n\n\t} //end default constructor"; //check to see if they want the print function if ($_POST['print']) { $file .= "\n\n\t/********* \t* Purpose: Display the object \t* Preconditions: None \t* Postconditions: None \t*********/ \tfunction print() {"; if ($_POST['debug']) $file .= "\n\n\t\tif (\$this->debugger)\n\t\t\techo \"DEBUGGER: printing $filename object\";"; $file .= "\n\n\t\techo \"<b>Displaying $filename Object</b><br/><br/>"; foreach ($fields as $index => $value) $file .= "\n\t\t\t{$value['name']} = \$this->{$value['name']}<br/>"; $file .= "\";\n\n\t} //end print function"; } //check to see if they want the get methods if ($_POST['get']) { foreach ($fields as $index => $value) { $file .= "\n\n\t/********* \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 .= "\n\n\t\tif (\$this->debugger)\n\t\t\techo \"DEBUGGER: calling {$filename}->get" . ucFirst($value['name']) . " method\";\n"; $file .= "\n\t\treturn \$this->{$value['name']};\n\t}"; } } //check to see if they want the set methods if ($_POST['set']) { foreach ($fields as $index => $value) { $file .= "\n\n\t/********* \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 .= "\n\n\t\tif (\$this->debugger)\n\t\t\techo \"DEBUGGER: calling {$filename}->get" . ucFirst($value['name']) . " method\";"; $file .= "\n\n\t\tif (!\$value)\n\t\t\treturn \"Invalid value\"; \t\tmysql_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 .= "\")\n\t\t\tor die('Cannot set value for {$value['name']}: ' . mysql_error());\n\n\t\t\$this->{$value['name']} = \$value;\n\t}"; } } $file .= "\n\n} //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>";
Amazing…