以思维的速度编程。
Phlo 转换为纯 PHP,并将紧凑的语法与全栈性能相结合。
为什么选择Phlo?
没有绕道。
Phlo 直接运行在 PHP 上。没有解释器,没有打包器,没有隐藏层,只有执行的紧凑代码。
后端和前端,一个文件。
路由可以同步和异步工作,而无需单独的代码路径。Phlo 的前端引擎与后端增量通信,从而使您能够轻松构建响应式和交互式应用程序。
没有分号 没有借口
一种用于路线、视图、样式和前端逻辑的语言。没有分号,没有多余的文件夹,没有外部工具链 - 只有像自然一样易读的干净代码。
Phlo 的独特之处
与其他PHP堆栈的公平比较。我们赢得了什么,我们又让步了什么?
| Phlo | Laravel | Livewire | HTMX | |
|---|---|---|---|---|
| 编译器模型 | 编译为PHP | 解释 | 解释 | 后端无关 |
| 一种全栈语言 | 是的,路由,视图,CSS,JS在一个文件中 | 刀片 + 松动的 JS | Blade + Livewire属性 | HTML + 选择的后端 |
| 异步UI更新 | 从同一路由应用()-协议 | 自己构建(惯性,自有JS) | 每个操作的服务器往返时间 | 通过网络的HTML片段 |
| 实时 | phloWS 合同,内置 | Echo + Pusher / Redis | 通过Laravel的回声 | SSE扩展 |
| 生态系统与社区 | 小,正在成长 | 巨大,几十年历史 | 在Laravel中很大 | 大,框架自由 |
简单行动
看Phlo如何优雅地解决复杂任务。
route both GET demo active => view(%app->shell('active', $this->content), 'active demo')
prop tab => $_GET['tab'] ?? 'routes'
prop tabs = ['routes', 'views', 'resources']
view content:
{{ %app->intro('active', 'Bouwt conditioneel een class-attribuut voor UI-state. Hier bepaalt de query parameter welke tab actief is.', 'active($tab === $current, tab)') }}
<article class="panel">
<h2>Tabs</h2>
<nav class="tabs">
<foreach $this->tabs AS $tab>
<a href="/demo/active?tab={{ $tab }}"{{ active($this->tab === $tab, 'tab async') }}>{{ $tab }}</a>
</foreach>
</nav>
</article>
{{ %app->flow($this->tab, 'active($this->tab === $tab, tab async)', 'Alleen '. $this->tab .' krijgt active') }}
在两分钟内开始
使用Docker,你可以在不安装任何东西的情况下运行应用程序:安装程序会询问名称、主机和资源,解决依赖关系,并在干净构建后才结束。
使用 Docker(最快)
$ docker run -it -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /phlo/install.php /app
$ docker run -p 80:80 -v $(pwd)/app:/app ghcr.io/q-ainl/phlo
或者从源代码
$ git clone https://github.com/q-ainl/phlo.git /srv/phlo
$ php /srv/phlo/install.php /srv/example.nl/
更喜欢手动还是更详细?指南描述了每一步。 阅读指南