使用 PHP 进行组件开发?

Posted

技术标签:

【中文标题】使用 PHP 进行组件开发?【英文标题】:Component Development with PHP? 【发布时间】:2011-01-09 12:23:06 【问题描述】:

编辑:这个问题仅涉及 100% 的 Web 开发。请不要将问题与桌面开发联系起来。请在回答之前阅读整个问题。

如果目前有兴趣以更像桌面的方式开发 php 应用程序,我当然很感兴趣。我的意思是类似于 ASP.NET 的经典 WebForms 实现,其中封装域、业务和 UI 逻辑的组件在某种程度上放在一个页面(应用程序)中,它们通过由处理的事件相互“对话”主应用程序。此外,母版页可以在声明它们时设置一些组件参数。对于许多开发人员来说,它可能不是当前的选择,但肯定有它的用途,就像 ASP.NET 的用途一样 - 以数据为中心的大量应用程序、Intranet 应用程序或应用程序,其中某些组件逻辑将被重用多次使用不同的输入参数,预期会得到不同的结果。

据我所知,曾经有过类似的东西 - 一个名为 PRADO 的框架,我不再确定它的存在。该站点仍然存在,但我想社区工作很慢。

我很高兴听到答案,当然还有批评。我很高兴知道任何当前的开发,以及为什么不知道它的用例。

【问题讨论】:

【参考方案1】:

除了 Prado 之外,还有更活跃的 yii 框架。同样作为一个类似于 ASP.NET 的平台,我可以推荐 Embarcadero html5 Builder,它是 Delphi4PHP/RadPHP 的最新版本

【讨论】:

【参考方案2】:

你似乎对你在这里想要达到的目标有点困惑。

Prado 在将客户端事件与服务器端处理绑定在一起方面做了很多工作。它与构建复杂的逻辑逻辑无关。此外,PHP 也不适合传统的应用服务器模型,例如由 Java 或 ASP.NET 实现的模型 - 但是 INHO 并不是一件坏事,因为拥有应用服务器的原因主要是为了克服这些语言的缺点Web开发。 OTOH 有极少数领域 PHP 的无共享模型可能会突兀(例如考虑文件锁定队列的问题)。

大概从您对 ASP.NET 的描述来看,您认为 PHP 不适合这类任务?如果只有某种方式我可以在不同的上下文中重用同一个类? (!!!!!!)

我对 PHP 的大多数工具包/框架的不满是它们试图满足每个人的需求,但最终在特定领域有些欠佳。这并不是说那里没有很好的集中工具,例如。 ADOdb、jpgraph、Smarty。前段时间,我开发了一个表单绘制工具,旨在与 PHP 应用程序 (PfP Studio) 集成,也许有一天我会完成它。但是,对于您使用哪个框架,肯定有很多可供选择,而不必求助于诸如 Prado 或元数据库使用的抽象表示。 CakePHP、Symfony、Zend 和 Horde 浮现在脑海中,但还有其他的。我想 PHP 与 .NET 或 J2EE 的区别在于没有人告诉你必须使用他们的解决方案。

C.

【讨论】:

【参考方案3】:

你可以看看我几年前开发的Tigermouse Framework。它似乎正是您正在寻找的。它具有这种 Web 表单方法,您可以在其中定义视图和表单,在其上放置其他控件并分配事件,然后在服务器端处理这些事件。

看看这个简单的拖放shopping cart app 并查看source code。

【讨论】:

【参考方案4】:

考虑到 PHP 的首字母缩写词代表 (PHP) Hypertext Preprocessor,所有将 PHP 用于桌面开发的方法本质上都是一种 hack,我不同意。绝对不是原生的。

我建议离开 PHP 去预处理超文本和用于构建桌面软件的专用解决方案;-)

【讨论】:

【参考方案5】:

有一个很棒的软件Delphi4PHP 可以让你像 asp.net 那样做 php 开发/组件创建,它是 Visual Studio 或可视化的。它还具有出色的可视化库 VLC(Visual Component Library),允许您使用拖放支持创建元素。

【讨论】:

【参考方案6】:

你的意思是 php-GTK 之类的吗? http://gtk.php.net/

或者更像客户端的 Flash 和服务器端的 php/flex 等 RIApplications ?

【讨论】:

我希望我的问题足够清楚。我在这里严格地谈论 Web 开发。以 ASP.NET WebForms 为主要示例

以上是关于使用 PHP 进行组件开发?的主要内容,如果未能解决你的问题,请参考以下文章

Flask组件化开发:Blueprint(蓝图)

前端(6)开发自己的组件库+初步测试

在 Joomla 组件开发中导入 PHP 代码

前端笔记 11:使用Web Components进行原生组件化开发

+++++++php组件SQL组件

rollup开发自己的组件库(5)