PHP 在我心中占据着特殊的位置。它是我的第一份工作,我记得我在家里花了无数个小时做一些小项目。我非常想用 PHP 创建桌面应用程序,但我从来没有做到过。
现在,感谢 NativePHP,我可以了。 NativePHP 追随 Slack、Discord 和 Trello 等流行应用程序的脚步,将您的 PHP 应用程序包装在 Electro 中。它允许后端逻辑在 PHP 上运行,而 UI 则使用 HTML、CSS 和任何 JavaScript 框架构建。
我决定通过将 Laravel 应用程序转换为桌面应用程序来深入研究 NativePHP。为了让你更清楚地了解,让我们从一个基本的设置开始。我正在开发的应用程序有一个 Laravel 后端和一个 React 前端,以 MySQL 数据库作为其骨干。
首先,我们通过 Composer 安装 NativePHP:
$ composer require nativephp/electron
这扩展了 Laravel 的 artisan 工具,增加了一组新的 NativePHP 特定命令,例如 php artisan native
显示了构建和管理本地应用程序的命令列表。
接下来,运行 php artisan native:install
来设置基本结构。
特别值得注意的是两个文件:
config/nativephp.php
用于应用程序配置app/Providers/NativeAppServiceProvider.php
用于启动序列和注册本机组件。应用程序设置完毕后,我们可以开始开发构建:
$ php artisan native:serve &
$ npm run dev &
我们需要启动 PHP 和 UI 的开发服务器,在本例中, npm 使用 Vite 来构建并为 Electron 窗口提供 UI 组件。
NativePHP 将应用程序与 Electron 捆绑在一起,嵌入了 PHP 解释器。在开发过程中,它将后端切换到本地 SQLite 数据库,因此我们需要使用 php artisan native:migrate
运行迁移来设置新数据库。
为了增强桌面体验,NativePHP 允许集成本地元素,如通知、菜单栏和热键。
我通过编辑 app/Providers/NativeAppServiceProvider.php
在应用启动时添加了一个简单的通知,这有助于我们给应用带来我们想要的原生感觉。
首先,我们添加通知界面:
use Native\Laravel\Facades\Notification;
然后,在 boot
函数中,在窗口打开后添加以下代码:
Notification::title('Application Started')
->message('This message is comming from NativePHP running on Electron')
->show();
}
保存后,热重载功能应该会重启应用并显示通知(如果看不到通知,请检查是否没有启用 Electron 的通知)。
对于生产版本,我们在 config/nativephp.php
中填写发布细节。值得注意的是,环境文件 ( .env
) 被绑定到构建中,因此敏感数据必须使用 cleanup_env_keys
进行清理。
要为你的操作系统构建一个版本,只需运行:
$ php artisan native:build
这个过程生成各种包,包括 DMG、Zip 文件和应用程序的二进制文件。
我们还可以使用以下命令构建 Windows 和 Linux 包:
$ php artisan native:build win
$ php artisan native:build linux
在构建过程完成后,我们应该得到一个 setup.exe
、AppImage 和 .deb
文件。
在深入了解 NativePHP 之前,需要考虑以下几点:
NativePHP,即使在 alpha 阶段,对于 PHP 开发者来说,也是一个令人印象深刻且用户友好的框架。它为基于 PHP 的桌面应用程序打开了一个新的可能性世界。如果你正在从事 PHP 开发,NativePHP 绝对是一个值得关注的项目。