一种语言。一种平台。
从代码到完整的基础设施

Phlo 将一种自己的全栈语言转译为 PHP,便于阅读。相同的语言编写你的 routes,控制你的 DOM,运行你的服务器并管理你的 fleet。基于支撑超过 70% 网络的技术,作为对十五年 JavaScript 堆栈的回应。

poll.phlo
prop title = 'Phlo Poll'
prop options = ['Phlo', 'Svelte', 'Laravel', 'Rails']

route GET poll => view($this, $this->title)

view:
<main#app.poll>
	<h1>$this->title</h1>
	<foreach $this->options AS $option>
		<a.async href="/vote/$option">$option</a>
	</foreach>
</main>

<style>
.poll a {
	display: block
	background: $primary
	border-radius: 8px
}
</style>

Phlo 在 70 秒内

为什么 Phlo 存在以及它能给你带来什么,而无需阅读任何文档。

四层,一个系统

Phlo不仅是一种语言,也不仅仅是一个框架。每一层都是建立在上一层之上,使用相同的语法,采用相同的思维模型。

Phlo 拥有的一切

从 CSRF 到实时,从 ORM 到 Stripe:一种语言,电池包含在内。过滤或点击一个概念。

这样Phlo阅读

五个 Phlo 源的例子,以及转译器生成的内容。没有工具链,没有魔法:只有可读的输出。

一条规则调度并渲染。一个路由总是以 view()、apply() 或 location() 结束。

Phlo-铜
prop question = 'Which stack wins?'

route GET poll => view($this->question, 'Phlo Poll')
Output
// Compiles to readable PHP:
class poll extends obj {
	public $question = 'Which stack wins?';

	public static function GETpoll(){
		return view(phlo('poll')->question, 'Phlo Poll');
	}
}

HTML 在与逻辑相同的文件中。点语法用于类和 ID。空行结束视图。

Phlo-铜
prop question = 'Which stack wins?'
prop options = ['Phlo', 'Next.js', 'Laravel', 'Rails']

view:
<main#app.poll>
	<h1>$this->question</h1>
	<foreach $this->options AS $option>
		<button>$option</button>
	</foreach>
</main>
Output
<!-- Server-rendered HTML: -->
<main id="app" class="poll">
	<h1>Which stack wins?</h1>
	<button>Phlo</button>
	<button>Next.js</button>
	<button>Laravel</button>
	<button>Rails</button>
</main>

用你的母语写。Phlo通过哈希查找翻译,并回到源头。

Phlo-铜
view:
<h1>{en: Which stack wins?}</h1>
<button>{en: Vote}</button>
Output
<!-- /poll  (source language: English) -->
<h1>Which stack wins?</h1>
<button>Vote</button>

<!-- /nl/poll  (auto-translated via langs/nl.ini) -->
<h1>Welke stack wint?</h1>
<button>Stem</button>

一条路线同时支持同步和异步。在异步模式下,它发送DOM命令而不是HTML;客户端会立即应用它们。

Phlo-铜
route both POST poll vote $id {
	if (!$option = type_poll::record(id: (int)$id)) return false
	type_poll::change('id=?', (int)$id, votes: $option->votes + 1)
	if (%req->async) return apply(outer: arr('#results' => $this->results))
	location('/poll')
}
Output
// Async vote: the server replies with DOM commands,
// the client applies them. No reload, no JS, no API layer.
{
	"outer": {
		"#results": "<section id=\"results\" class=\"card\">...</section>"
	}
}

// A plain browser (no async) gets a redirect to /poll instead.
// One route serves both.

CSS 在同一个文件中:嵌套,带反斜杠的伪选择器,没有分号

Phlo-铜
<style>
.option {
	display: grid
	grid-template-columns: 1fr auto
	gap: 4px 12px
	.bar {
		height: 8px
		border-radius: 4px
		background: $primary
		transition: width .4s
	}
	\:hover .bar: background: $accent
}
</style>
Output
/* Compiled into app.css: */
.option {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 4px 12px;
}
.option .bar {
	height: 8px;
	border-radius: 4px;
	background: var(--primary);
	transition: width .4s;
}
.option:hover .bar {
	background: var(--accent);
}

这只是一个预览。 完成整个巡演 并查看每一层的动作。

手工艺

在能力之下是工艺:干净的输出、最小的请求和一种在大多数堆栈中找不到的开发体验。

完美缩进的 DOM

转换器以务实的方式打印:每个嵌套的 view 正好缩进一个制表符,制表符仅在标签之前。你的输出保持可读,无需格式化。

<div class="card">
	<h1>Titel</h1>
	<p>Geneste view, netjes ingesprongen</p>
</div>

一种 CSS,一种 JS

Phlo 将你应用中的所有样式和脚本块以及资源打包成一个 app.css 和一个 app.js。一个完整的应用大约需要 4 到 6 次请求,而类似的框架则需要 15 到 20 次。

在所有四个审核中获得100%的Lighthouse分数 这样一个 Phlo 应用可以获得 100/100 →

自己的 CSS 方言

CSS 在同一文件中,无需分号:嵌套、变量、单行规则和颜色混合。转译为带有自定义属性的标准 CSS。

.card {
	background: $surface
	border-radius: $radius
	.title: color: $primary
}

在调试中性能监控

打开调试,控制台会告诉你发生了什么:每次页面加载、交互和async/SPA请求,以及时间。

🌎 APP.GET /home
⚓ HISTORY.FORWARD 1
✅ APPLY

内置分析

visitors-resource通过heartbeat测量每个窗口和每个页面的真实可见时间,符合GDPR,且不依赖外部服务。还有view-transitions、审计日志、CSP模式和AI翻译。

更多专业领域 →

编辑器高亮

VSCode 和 Notepad++ 的语法高亮在仓库中。TextMate 语法在 Sublime、JetBrains、Zed 和 Helix 中也有效。

编辑支持 →

使用 Phlo 构建

没有玩具示例,只有真实的、运行中的产品:从第一个 route 到生产完全用 Phlo 编写。

Phlo的力量不在于一个层面,而在于所有层面的垂直整合:同一种语言编写你的路线,控制你的DOM,运行你的服务器并管理你的舰队。

阅读设计哲学 →

在两分钟内开始

使用Docker,你可以在不安装任何东西的情况下运行应用程序。安装程序会询问名称、主机和资源,并在干净构建后才结束。

$ docker run -it -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /phlo/install.php /app

完整安装指南 →

Q-AI 的产品,由 Q-dev 构建

Q-AI 开发实用产品和技术解决方案,以简化工作并提供真正的价值。Phlo 是这一工作的开源基础。

我们使用必要的cookie来使该网站正常工作。在您的许可下,我们还使用分析工具来改善网站。