Netbeans向导生成php类

时间:2010-09-30 14:45:36

标签: php class orm netbeans wizard

我想要一个向导,我插入数据库连接,并通过一些设置生成PHP类。该向导可以(内部)使用已创建的模板。

这是可能的吗?那已经存在了吗?如果没有,有任何关于如何做的想法吗?

谢谢!

修改

我正在寻找能让我制作自己的课程模板或设置它的东西。

2 个答案:

答案 0 :(得分:3)

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类可能会为您完成。这是[{3}},也可以在Google上进行一些搜索。

解决方案#2

继承可能是你的答案。创建具有连接和公共方法的BaseTable,然后创建从BaseTable继承(扩展)的ChildTable。

您可以创建数据访问层(DAL)以创建公共数据访问方法或创建Table对象。

以下是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);

您可以重写父类并使其成为通用表,其中包含所有字段和保存方法,删除方法等等。然后子类将扩展它并使其特定于表。 复制代码,在任何地方使用模板都不是一个好习惯。扩展类更好,如果您决定进行更改,则必须在一个位置进行更改。但是如果你有几十个表并且你使用了模板,你可能需要进行几十次更改。

只是遇到一个有趣的话题,可能会帮助你Sun's blog showing how to use templates

答案 1 :(得分:0)

如果你在PHP中使用ORM,例如Doctrine,那么他们有很好的文档命令行工具,可以让你自动生成类存根。

看看他们的reference guides