我想要一個嚮導,在其中插入數據庫連接,並使用一些設置生成PHP類。該向導可以使用(內部)已經創建的模板。Netbeans嚮導生成php類
這是可行嗎?這是否已經存在?如果沒有,如何做到這一點的任何想法?
謝謝!
編輯
我在尋找的東西至極讓我做我自己的類模板或設置。
我想要一個嚮導,在其中插入數據庫連接,並使用一些設置生成PHP類。該向導可以使用(內部)已經創建的模板。Netbeans嚮導生成php類
這是可行嗎?這是否已經存在?如果沒有,如何做到這一點的任何想法?
謝謝!
編輯
我在尋找的東西至極讓我做我自己的類模板或設置。
NetBeans岩石!
NetBeans具有強大的MySql支持,但是,沒有本地工具可以從表中生成類。
有一個名爲db2php的插件check it out here。它將允許您生成類,基本上是ORM。太棒了,如果你不使用框架。如果您使用Zend框架,請在NetBeans站點上搜索Zend Framework支持或右鍵單擊項目,然後轉至Zend - >Run Zend Command
。
此外,爲了便於連接和代碼生成使用ALT + Insert
,節省了大量的時間。上下文根據您在文檔中定義的內容而變化。
編輯於2010年10月1日
沒有軟件有定製的模板系統數據庫表的創建。人們試圖轉換到更標準化和無sql的方式,換句話說就是ORM。學說是其中之一,但有學習曲線。
解決方案#1
你可能要考慮標準的NetBeans模板系統。如果你轉到[工具 - >模板 - > PHP部分],你將能夠添加模板,然後通過[右鍵 - >新建 - >其他 - >你的模板]從你的模板創建新的類。擴展PHP類可能會爲你做。這裏是Sun's blog showing how to use templates,也在Google上做一些搜索。
解決方案#2
繼承可能是你的答案。創建具有連接和常用方法的BaseTable,然後創建從BaseTable獲取(擴展)的ChildTable。
您可以創建數據訪問層(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個地方改變它。但是,如果你有幾十個表格並且你使用了模板,那麼你可能需要做幾十次更改。
正好碰上一個有趣的話題,如果你使用的PHP的ORM如Doctrine他們非常有據可查的命令行工具,使您能夠自動生成類存根可能會幫助你Which database patterns (ORM, DAO, Active Record, etc.) to use for small/medium projects?
。
看看他們的reference guides。
像'msqli'或'pdo'或'pear'這樣已有的實現有什麼問題? – 2010-09-30 14:51:14