提问人:mario 提问时间:1/2/2011 最后编辑:mario 更新时间:6/3/2020 访问量:1495
PHP 中任何真正的 MVC 库(用于 GUI 应用程序)
any real MVC library in PHP (for GUI apps)
问:
我想知道其中一个 PHP gui 库是否有任何抽象框架。我们有 PHP-GTK,一个 PHP/Tk 接口,似乎还有 PHP-QT。(没有尝试过。
我知道在 Python 中针对原始 Gtk+ 接口进行编写是可以忍受的,因此它对 PHP 来说似乎不是很诱人。我认为 Qt 也是如此,Tk 也是相当低级的。因此,我正在寻找能够在三者中的任何一个之上提供更好的对象结构的东西。主要是 TreeViews 总是一件苦差事,php-gtk 回调在 PHP 中很奇怪,所以我想要对此进行简化。如果它可以轻松地在我的业务逻辑上添加 GUI/视图,而不需要太多的控制代码,这可能已经有所帮助了。
因此,由于 GUI 应用程序是 MVC 或 MVP 真正有意义的领域,我想知道是否存在任何库。
仍然有待回答。
(可能会有第二轮赏金。这是一个不常见的话题,所以需要更多的研究。
答:
你试过WinBinder吗?不完全与 MVC 相关,但是一个非常好的扩展,可以在 PHP 中创建基于 gui 的程序。
评论
[不是答案。只是想从问题中删除它,因为它只是相关的,而不是解决方案。
有PHP接口预处理器。但是,它非常简单和低级。它为Gtk提供了输出接口,以及ncurses,但也提供了PDF或XHTML序列化。这很有趣,因为它接近真正的 MVC 结构,允许将视图交换为不同的后端,甚至无需调整控制器。但是它只提供了基本的小部件,而不是很多简化。因此,我只认为它与我最初的问题有关。所以,旁注。
我真的怀疑你会找到这样的东西来使用 OotB。PHP GUI编程在几年前完全失败了。
但是,您可以做的是使用某种桥接器来连接来自另一种语言的体面的 MVC。您有以下选择:
- PHP/Java 桥接 http://php-java-bridge.sourceforge.net/pjb/
- 提升.PHP (C++) https://github.com/moriyoshi/boost.php/wiki
- SWIG(C、C++通过包装器)http://www.swig.org/
评论
http://phpketchup.isgreat.org/ PHPKetchup 是一个处于规划阶段的新项目。目前没有任何可用的代码(似乎也是商业性的,而不是开源的)。它被宣布为PHP-GTK之上的框架。有一个概念文档明确列出了设计 MVC 框架的目标。
然而,它们似乎从CodeIgniter中汲取了灵感,主要是从常见的PHP框架结构中汲取了灵感。重点似乎不在于将 PHP-GTK 与应用程序逻辑集成,而主要在于提供一个数据库接口作为模型,并为 View 提供一个瘦的 Gtk 接口。
MVC 架构:
我们将为 PHP-GTK 框架设计和实现模型-视图-控制器 (MVC) 架构。SQLite 将用于 Model。删除 HTML、CSS 和 Javascript 后,PHP-GTK 函数和 Glade 文件将集成到 View 中。控制器将相应地修改,以使用新创建的视图。
因此,它可能只是在名称和组织上是 MVC,但其中一个图表提到了“PHP-GTK 函数添加”,并且还有对象结构的 Gtk 助手的进一步提示。
现在有几个选项适用于较新版本的 php。其中一些不能为您提供开箱即用的 MVC,但您可以使用它们在 php 中制作 GUI 应用程序。
有一个非常容易使用的php-gui。它不需要任何特殊的 php 扩展,您可以像您依赖的任何其他 php 库或框架一样使用 composer 安装它。它面向简单、标准的用户界面。
如果你需要做一些非常自定义和图形化的东西,并且愿意使用一个设计用于用 C 语言制作游戏的 API(或者如果你想用 php 制作游戏),你可以通过 SDL 通过 FFI 通过 ffi-sdl 使用 OpenGL。它目前(截至 2020 年 6 月 1 日)需要 php 7.4 或更高版本,因为它使用了最近添加的 php ffi 功能。尽管这依赖于 ffi 扩展,但 php-ffi 仍然很容易添加到您的项目中。它仍然有点无扩展(如 php-gui),因为没有为此量身定制的扩展。与其他一些扩展不同,ffi 不会被维护的可能性不大,因为它是 php 本身的一个功能。大多数人只需要使用 composer 将 ff-sdl 添加到他们的项目中,并可能在他们的 php.ini 中启用 ffi。
我刚刚了解到你也可以使用PeachPie。它允许您为 .NET 编译和运行 php 代码,因此您可以访问 .NET GUI 库,包括 MVC 库。
评论