3

我花了很多时间(实际上太多时间)开发后台应用程序,其主要目的是内容管理和 Web 应用程序配置。以下是我如何描述这些应用程序:

- Made with PHP
- Using a MySQL or Postgres or SQLite database
- Made of a lot of pages and features
- Very simple features, mostly data CRUD (create+read+update+delete into the database)
- Mostly made of forms
- UIs are usually quite simple (html + css + very basic javascript)

这些应用程序中的所有数据访问代码都依赖于我多年前开发的库,并且每次可以重复使用。这部分并不耗时。

耗时的是 UI 部分,主要是设计数据列表和表单。在这里使用 WYSIWYG 编辑器会很有意义,除了我尝试过的那些(Dreamweaver、Frontpage、Expression、Eclipse ......)并没有真正让它变得更快,因为生成的代码通常很臃肿,而这些工具可以不要依赖自定义库,例如我制作和使用的库。

我认为使用 Web Tookit 可能是另一种减少开发这些工具时间的方法。因此,在我花太多时间寻找完美的工具包之前,我会感谢您在此类问题上的意见和经验。

免责声明:我不是在寻找关于 MVC 是如何走的路以及 CodeIgniter/Zend/WhatEver 是我应该使用的框架的建议。我的问题不是关于我应该构建应用程序的框架或设计模式。我的问题是关于使用正确的工具来更快地开发简单的 Web 应用程序,并且它们的代码更加可重用。

有没有我不知道的很棒的 Web 应用程序 RAD 工具?

您将哪个工具包用于简单但繁重的 Web 应用程序?

是否有用 PHP 编写的优质、轻便、不臃肿、可靠的工具包?

提前致谢 !


编辑:到目前为止没有得到太多反馈:/我知道我的问题非常广泛,但我相信很多人都在从事我正在谈论的同类项目,并通过使用工具包提高了他们的生产力例如GWTWicket等。请告诉我吧:)


9 月 28 日编辑:感谢大家提供有趣的答案。我在过去几个月可以尝试的任何框架都没有涵盖我正在寻找的内容。PHP 可能不是用于我的 RAD 愿景的最佳语言,但因为它是一种我非常熟悉的语言,而且我不想花太多时间学习 Python 以及我了解 PHP(目前) ,我决定自己做。每次我对小部件有特定需求时,我都会以最可重用的方式对其进行编码......到目前为止一切都很好:)

我可能会在某个时候开源该工具包,并让你们知道。

4

9 回答 9

1

我过去几年一直在从事的 PHP 项目很像这样。繁重的表单,繁重的服务器端逻辑,但大量冗余的表单编码。更糟糕的是,它并不是所有的形式,有时我们实际上需要做一些花哨的布局(即使只是做一个树控件,没有库也是一种痛苦),而且 UI 的本土特性意味着我会战斗浏览器从头到尾都有怪癖。

所以,我开始思考什么是更好的架构。我们需要非常强大的表单控件、丰富的网格、丰富的树、高级的布局,我们需要逐步迁移到这些。似乎没有一个 PHP 框架适合。然后我退后一步,意识到它不一定是 PHP,也可以是 javascript。我们已经对 javascript 有要求,所以可以继续使用它。首先,我查看了较小的库、jquery、prototype,但很明显它们做得还不够。所以我查看了 Dojo、ExtJS、YUI,所有非常重的 javascript 工具包,并确定 ExtJS 具有最好的控件。

我们的 UI 结构严重依赖 iframe,外部是导航框架,内部是应用程序框架,内部是功能框架,等等。我们最终的结果是我们将它们从外部迁移到内部。它们都变成了 ExtJS,并且都存在于同一个页面中。服务器端代码保持不变,但它已迁移到 Web 服务中。同时,我们集成了 zend 框架,并且正在将一些你真的不应该在本土做的事情移植到它,比如身份验证和翻译。

最终目标是能够只编写业务逻辑而不必弄乱所有样板。现在知道我的方法是否会成功还为时过早,但我认为我的信息将对你的代码库至关重要,并决定哪些部分你想继续自己编写,哪些部分你想外包给一个库。

于 2009-09-27T16:45:51.800 回答
1

请尝试http://agiletoolkit.org/。我认为这是你需要的。用最少的时间/代码得到结果。

于 2011-04-07T20:46:07.470 回答
0

尽管您要求使用 PHP + MySql,但我还是建议您尝试使用 OutSystems 敏捷平台。

您可以在 10 分钟内创建一个简单的 CRUD 应用程序,并在您进入更复杂的系统时对其进行扩展。

在www.outsystems.com免费下载社区版。

最好的,

于 2010-07-05T14:55:49.017 回答
0

我开始使用 Django,它具有非常有用的功能,尤其是。内置管理员(用于一般 CRUD 的东西)和非常棒的表单处理代码和小部件渲染。我建议您看一下,即使您不打算使用 python,也只是为了了解一下。

你提到你不想要关于“使用 X 框架”的建议,因为这更多的是关于 RAD 和 UI/表单,而不是系统架构。但我发现一个好的框架对 UI 和表单方面的帮助与对架构的帮助一样大。这意味着虽然框架非常适合大型项目,但它们在减少代码冗余方面也非常有帮助。我开始在 PHP 中创建自己的辅助函数,我会从一个应用程序复制到另一个应用程序,它会根据一些参数自动呈现一个 HTML 表单。即使经过大量工作,与 Django 提供的相比,这还是非常初级的,基本上我是在编写自己的框架。

我认为您可能正在寻找一种 GUI 样式的工具来提供帮助,但您可能会发现一个好的 PHP 框架在这种情况下更有帮助。至少,您是否尝试过创建自己的帮助程序库?我知道这些对我帮助很大。

简单示例:

函数渲染输入($name, $value="") {
    print "<input type=\"input\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($value) . "\" >";
}
函数 renderRadios($name, $value="", $choices=array()) {
    for ($choices as $cvalue) {
        print "<input type=\"checkbox\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($cvalue) . "\" " . ($cvalue == $value ? "checked" : "") 。">";
    }
}

并从那里建立起来。像这样愚蠢的事情往往会使表单创建速度更快。一个好的框架将把它从水中吹走。而且我确定上面有一些错别字,我还没有做过一点PHP。

如果这不是您要查找的内容,您能否在问题中添加更多内容?我很好奇。

于 2009-09-28T04:23:18.467 回答
0

我认为Symfony可能是要走的路,因为就像你的应用程序一样:

  • 它是用 PHP 编写的
  • 基于 Propel/doctrine 的 ORM(因此您可以使用 MySQL、Postgres 或 SQLite)
  • 使用的架构和模式将帮助您处理复杂的应用程序
  • 您将找到帮助您调试、记录和测试应用程序的工具
  • 表单创建、验证、l10n 和 i18n、测试、AJAX 很容易symfony 中的表单在这里解释,检查一下
  • 在开发应用程序时对网页进行原型设计很容易

在 symfony 框架中实现的其他工具/实践将使您的生活变得轻松:

  • 使用 YAML 语法的完整配置(易于阅读和理解)
  • 脚手架功能为您生成一个简单的 CRUD 界面,用于编辑您的数据。
  • 您不必担心编码表单清理、安全、缓存、ACL;需要配置,但不需要繁重的编码。

唯一的缺点是,你需要阅读一些文档来理解“symfony 的做事方式”。但是,嘿,一个好的框架是 20% 的代码和 80% 的良好实践

我的观点是,即使你不想在你的项目中使用 Symfony,你也应该检查它的特性和内置工具,因为那是你项目中想要的那种工具。

于 2009-09-01T12:15:46.387 回答
0

目前,我正在使用一个实体表单类来呈现具有客户端和服务器端验证的 HTML 表单,以及一个用于编写 SQL 的数据库类。我可以在大约 10 行代码中获得管理控制台的 CRUD 部分。我自己编写了这些类,因此我可以在我的所有项目中重复使用它们。希望这能给你一些想法?

我个人会远离所见即所得的工具。

于 2009-08-03T13:49:37.870 回答
0

不确定,但看起来 Tibco 通用接口 (http://www.generalinterface.org) 是您要找的。

于 2011-05-05T21:39:01.723 回答
0

我正在测试 NuBuilder.com,我发现它在几天之内就可以做到,起初看起来很有希望。如果你看看,请给我你的反馈!

于 2009-08-21T15:30:44.087 回答
0

也许采用或创建像Django那样的“基于应用程序”的基础设施?在 Django 的案例中,社区创建了一些强大的基线,例如Pinax

于 2009-08-30T22:50:34.997 回答