pyxol / magnetar
Magnetar是一个专注于速度和易用性的Web应用框架。
v0.4.1
2023-11-09 22:32 UTC
Requires
- php: ^8.1
Requires (Dev)
- filp/whoops: ^2.15
- jbzoo/jbdump: ^1.5
- league/flysystem-aws-s3-v3: ^3.0
- php-amqplib/php-amqplib: ^3.0
- phpunit/phpunit: ^10.2
Suggests
- ext-memcached: Required for using memcache-specific caching functionality
- ext-pdo: Required for using database functionality
- ext-redis: Required for using redis-specific caching and queueing functionality
- filp/whoops: Strongly suggested for development environments
- league/flysystem-aws-s3-v3: Required for using the s3 filesystem adapter
- php-amqplib/php-amqplib: Required for using RabbitMQ-specific queueing functionality
- phpunit/phpunit: Required for running unit tests
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 / MariaDB、PostgreSQL和SQLite的驱动支持。从数据库中获取数据与使用以下方法一样简单
查询构建器
$results = DB::table('table')->where('id', 1)->fetch();
快速查询方法
$results = DB::get_rows("SELECT * FROM `table` WHERE `id` = :id", ['id' => 1]);
缓存
提供对Memcached和Redis的缓存驱动支持。获取缓存数据和解决缓存缺失与使用以下方法一样简单
$cached_value = Cache::get('key', fn () => { return 'value'; });