Next.js 使用 php
[!注意] 在 solidtime.io 查看 solidtime - 现代开源时间追踪工具
在你的 Next.js 项目中直接使用 PHP。
就像 use server
(其实并不是)。
你可以在这里观看我是如何制作它的
你可以像这样在 React 服务器组件中使用它:
return (
<button
formAction={async () => {
'use php'
(new PDO('mysql:host=localhost:3306;dbname=public', 'root', 'root'))
->prepare("INSERT INTO Bookmarks (slug) VALUES (?)")
->execute(array('new'));
}}>
插入书签
</button>
)
如果你想要,它甚至可以在 React 客户端组件中工作
// actions.js
'use server'
export async function phpHelloWorld() {
'use php'
print "来自 PHP 的问候";
}
// page.tsx
import {phpHelloWorld} from "../actions";
是的,这确实可以运行。相信我,我也希望它不会。
构建
你可以通过以下方式构建实现:
npm run build
npm run start
用浏览器打开 http://localhost:3000 查看结果。
如果你想尝试数据库示例,可以使用仓库中提供的 docker-compose 文件。
运行 docker-compose up -d
后,你需要手动创建要插入的数据库和表。
路线图(应该修复但实际上可能永远不会发生的事情)
- 可能有一种方法可以用 SWC 插件修复那个讨厌的预处理步骤,这些插件在 Next.js 中仍处于测试阶段,而且我认为他们很快就会切换构建工具,所以有什么意义呢?但是嘿,如果有人想做,随意。
- 我猜有一些黑客方法可以实现属性绑定。
致谢
查看 elnardu 的 C 和 Rust 原始实现:
免责声明
我希望不必说这个,但是:如果你甚至稍微考虑在任何应用程序中使用这个,你就是一个绝对的疯子,应该被终身禁止使用互联网,我希望你能找到其他有趣的活动,也许是园艺或木工。
自我推广
如果你喜欢这个项目,想看到更多有趣的 Web 开发项目,可以在 Twitter、Bluesky 和 Youtube 上关注我。