pyxol/magnetar

Magnetar是一个专注于速度和易用性的Web应用框架。

v0.4.1 2023-11-09 22:32 UTC

This package is auto-updated.

Last update: 2024-09-18 23:21:22 UTC


README

Magnetar是一个专注于速度和易用性的Web应用框架。

要开始,请查看Pulsar入门应用。

特性

  • 依赖注入容器是Magnetar框架的核心。它管理全局实例并自动解决类中的注入依赖。
  • 门面通过静态类提供开发者访问内部工具的便捷途径,无需管理实例或解决依赖。
  • 服务提供者提供服务的动态配置和连接。
  • 模型是与数据库交互的预测性数据结构。
  • 路由处理传入的请求并将它们导向适当的控制器。
  • 控制器使用请求生成返回的响应。

内核

Magnetar从头开始设计,旨在成为一个多接口框架。内核处理与应用程序的各种交互方式。《HTTP内核》处理传入的HTTP请求,《控制台内核》处理CLI请求。内核允许开发者为应用程序的每个接口使用相同的代码库,以实现代码的统一性和可预测性。

主题

主题为您的应用程序提供Web前端,并存储在应用程序根目录下的themes/目录中。

Magnetar对模板文件采用了一种简单的方法。PHP本身就是一个出色的模板引擎,因此模板文件完全是基于PHP的。使用Magnetar主题,无需学习任意的模板语言或语法,无需默认处理复杂的模板文件缓存,而且没有比原始PHP更快的基于PHP的模板引擎。

主题中模板文件的使用简单

// renders themes/my_theme/template_name.php
Theme::tpl('template_name', [
	'var' => 'value'
]);

在模板文件中,您可以使用传递给模板的上下文变量

<p>I am a template. My variable is: <?=esc_html( $this->var );?></p>

我们提供了一些全局函数来简化模板的渲染。这些函数包括:用于嵌入另一个模板的display_tpl(),用于在HTML属性中安全地转义字符串的esc_attr(),以及用于在HTML中其他地方安全地转义字符串的esc_html()

您还可以从模板文件中渲染另一个模板文件,无论是否有上下文变量。

// themes/my_theme/frontpage.php
<?php
	$this->display_tpl('header');   // 'var' is passed to this template
?>

<p>I am a template. My variable is: <?=esc_html( $this->var );?></p>

<?php
	display_tpl('footer');   // contextual variable 'var' is NOT passed to this template

根据您的需要,可以在应用程序的任何地方渲染不同的主题。如果控制器中的端点决定使用不同的主题,您可以

// renders themes/different_theme/template_name.php
Theme::theme('different_theme')->tpl('template_name', [
	'var' => 'value'
]);

适配器

数据库

默认包含对MySQL / MariaDBPostgreSQLSQLite的驱动支持。从数据库中获取数据与使用以下方法一样简单

查询构建器

$results = DB::table('table')->where('id', 1)->fetch();

快速查询方法

$results = DB::get_rows("SELECT * FROM `table` WHERE `id` = :id", ['id' => 1]);

缓存

提供对MemcachedRedis的缓存驱动支持。获取缓存数据和解决缓存缺失与使用以下方法一样简单

$cached_value = Cache::get('key', fn () => {
	return 'value';
});