NetBeans рулит!
NetBeans имеет мощную поддержку MySql, однако в нем нет встроенных инструментов для создания классов из таблиц.
Существует подключаемый модуль db2php, ознакомьтесь с ним здесь. Это позволит вам создавать классы, в основном ORM. Отлично, если вы не используете фреймворки. Если вы используете платформу Zend, найдите поддержку Zend Framework на сайте NetBeans или щелкните проект правой кнопкой мыши и выберите Zend -> Run Zend Command
.
Кроме того, для простого подключения и генерации кода используйте ALT + Insert
, что экономит много времени. Контекст меняется в зависимости от того, что определено в вашем документе.
Изменить от 1 октября 2010 г.
Не существует программного обеспечения, которое имело бы пользовательскую систему шаблонов для создания таблиц базы данных. Люди пытаются перейти на более стандартизированный и свободный от sql способ, другими словами ORM. Доктрина является одним из них, но есть кривая обучения.
Решение № 1
Возможно, вы захотите изучить стандартную систему шаблонов NetBeans. Если вы перейдете в [Инструменты->Шаблоны->В разделе PHP], вы сможете добавлять шаблоны, а затем создавать новые классы из вашего шаблона с помощью [Правый клик->Создать->Другое->Ваш шаблон]. Расширение класса PHP может сделать это за вас. Вот блог Sun, в котором показано, как использовать шаблоны, также выполните небольшой поиск в Google.
Решение № 2
Наследование может быть ответом для вас. Создайте BaseTable с подключением и общими методами, затем создайте ChildTable, который наследуется (расширяется) от BaseTable.
Вы можете создать уровень доступа к данным (DAL), чтобы создать общие методы доступа к данным или создать объекты таблицы.
Ниже приведен пример DAL.
abstract class DALBase {
/**
* Database connection
* @var <type>
*/
protected $_connection = null;
/**
* Name of table
* @var string
*/
protected $_tbl = null;
/**
* Name of primary key column
* @var string
*/
protected $_key = null;
/**
* Default Init
*/
public function __construct() {
$this->_tbl = 'table_name';
$this->_key = 'primary_key';
}
/**
* Gets the connection
*
* @return <type>
*/
private function _getConnection() {
if (!$this->_connection) {
$this->_connection = mysqli_connect('localhost', 'zend101', '', 'zend101', '3306');
if (!$this->_connection) {
throw new Exception('Could not connect to MySQL: ' . mysqli_connect_error());
}
}
//
return $this->_connection;
}
/**
* Executes the query
*/
public function executeQuery($query) {
$conn = $this->_getConnection();
return mysqli_query($conn, $query);
}
/**
* Loads item by primary key
*
* @param mixed $id
* @return object
*/
public function getByID($id) {
//
$query = "SELECT * FROM $this->_tbl WHERE $this->_key = $id";
//
$conn = $this->_getConnection();
$result = $this->executeQuery($query);
//
$item = mysql_fetch_object($query);
//
return $item;
}
/**
* Loads a list
*
* @return array
*/
public function loadList() {
//
$data = array();
//
$result = $this->executeQuery("SELECT * FROM $this->_tbl");
if ($result) {
// Scan through the resource
while ($row = mysql_fetch_object($result)) {
// put row object into the array
$data[] = $row;
}
}
//
return $data;
}
}
/**
* Car table
*/
class DALCar extends DALBase {
/**
*
*/
public function __construct() {
$this->_tbl = 'car';
$this->_key = 'vin';
}
}
/**
* Client table
*/
class DALClient extends DALBase {
/**
*
*/
public function __construct() {
$this->_tbl = 'client';
$this->_key = 'id';
}
}
// Usage
$dal = new DALClient();
$clients = $dal->loadList();
$client1 = $dal->getByID(1);
$client5 = $dal->getByID(5);
Вы можете переписать родительский класс и сделать его общим для таблицы, где у вас есть все ваши поля и метод сохранения, метод удаления и т. д., а затем дочерние классы расширят его и сделают его специфичным для таблицы. Не рекомендуется копировать свой код, везде использовать шаблон. Классы лучше продлевать, если решите внести изменение то придется менять в 1 месте. Но если у вас есть десятки таблиц и вы использовали шаблон, вам может потребоваться внести десятки изменений.
Просто наткнитесь на интересную тему, которая может вам помочь -medium-p">Какие шаблоны баз данных (ORM, DAO, Active Record и т. д.) использовать для небольших/средних проектов?
person
Alex
schedule
30.09.2010
msqli
илиpdo
илиpear
? - person Russell Dias   schedule 30.09.2010