blakvghost / juste
Juste 是项目 Bravo 的核心,我的个人 PHP MVC 框架,它本质上确保了对模型、控制器和基本模板引擎的理解。它还管理路由、中间件、数据库,特别是我的超级棒的 homemade mini ORM,当然也少不了易于发送邮件。
2.0.2
2023-07-10 13:24 UTC
Requires
- php: ^8.0
- symfony/dotenv: ^6.2
- symfony/mailer: ^6.2
This package is auto-updated.
Last update: 2024-09-20 07:10:57 UTC
README
Juste 是 Bravo 的核心,我的个人 PHP MVC 框架,它本质上确保了对模型、控制器和基本模板引擎的理解。它还管理路由、中间件、数据库,特别是我的超级棒的 homemade mini ORM,当然也少不了易于发送邮件。
文档
Bravo 的文档正在准备中,并将很快提供。请保持关注更新!
如何使用
要查看使用 Bravo 的示例,您可以参考 Bravo 项目。它作为演示项目,并将很快提供官方文档。
安装
要安装 Juste,您可以按照以下步骤进行
-
通过运行以下命令使用 Composer 需求此包
composer require blakvghost/juste
-
安装包后,您可以将 Juste 集成到您的 PHP 项目中。
要求
- PHP 8.0 或更高版本
请注意,Juste 需要以下包作为依赖项:symfony/dotenv (版本 6.2 或更高)
和 symfony/mailer (版本 6.2 或更高)
。这些依赖项将在您使用 Composer 安装 Juste 时自动安装。
功能
- 模型:使用 Juste 的 mini ORM 定义您的数据模型并与数据库交互。
- 控制器:实现您应用程序的逻辑并处理用户请求。
- 路由:定义路由并将其映射到特定的控制器操作。
- 中间件:对传入的请求应用自定义逻辑并修改请求或响应。
- 数据库:使用 Juste 的 ORM 轻松执行数据库操作。
- 模板引擎:利用 Juste 提供的基本模板引擎来渲染视图。
- 发送邮件:简化在应用程序中发送邮件的过程。
实用函数
Juste 提供了一些您可以在应用程序中使用的实用函数
常用外观
Common
外观包括各种实用函数
posts()
:返回一个包含所有全局 $_POST 变量内容的数组,并用 htmlentities() 进行转义。server(string $key)
:返回全局 $_SERVER 数组中给定键的值。input(string $key, string $default = '')
:返回全局 $_POST 或 $_GET 变量中给定键的值,如果未设置键,则可以指定默认值。file(string $key)
:返回全局 $_FILES 变量中用给定键上传的文件,如果没有上传文件,则重定向回上一页并显示错误消息。redirectTo(string $path = '')
:使用 header() 函数将用户重定向到给定路径。redirecTo(string $path = '')
:使用 header() 函数将用户重定向到给定路径(代码中的错误,已更正为 redirectTo)。sanitize_post(string $key, bool $strict = true)
:返回全局 $_POST 变量中给定键的清理值,并可选地验证该键是否存在且不为空。back()
:将用户重定向回上一页。with(string $message, $key = 'error')
:在会话中设置带有给定键的消息(默认为 'error')。json(array $data)
:返回给定数组的 JSON 编码字符串。user($attr = false)
:返回当前认证用户信息或如果未认证则返回空数组。store_media($file, string $newFileName)
:使用给定名称存储媒体文件并返回文件路径;如果文件上传失败,则重定向回带有错误消息的上一页。setDataOnSession($key, $message)
:使用给定键和消息在会话中设置数据。getDataOnSession($key)
:使用给定键从会话中检索数据。setErrorMessageOnSession($message)
:在会话中设置错误消息。dd($value, ...$args)
:使用 <\pre> 标签和 var_dump() 显示值和附加参数,然后退出。route(string $alias)
:返回给定别名的路由 URL。redirect(string $alias)
:将用户重定向到给定别名的路由 URL。
控制器外观
控制器外观包括一些用于控制器类的有用函数
render($view, $title = '', $context = null)
:返回完整的视图路径或带有上下文数据的 404 视图路径。它检查文件是否存在并返回适当的响应。html(string $html)
:返回一个包含完整 HTML 代码的数组,这对于返回 HTML 响应非常有用。can(array $user_type = null, string $column = 'roles')
:检查用户是否已认证且具有指定的用户类型/角色。如果用户没有所需的角色,则重定向回带有错误消息的上一页。mustAuthenticate(bool $statut = true)
:根据提供的状态检查用户是否已认证。如果认证状态不满足,则重定向并显示错误消息。
用法示例
路由
<?php namespace Routes; use App\Controllers\WelcomeController; use Juste\Facades\Routes\Route; Route::get("/", [WelcomeController::class, 'welcome'])->name('welcome'); Route::resource('password', WelcomeController::class); Route::group(function () { })->middlewares(['auth']); require_once 'api.php';
API 路由
<?php namespace Routes; use App\Controllers\MailsController; use Juste\Facades\Routes\Route; Route::post('api/mails', [MailsController::class, 'index'])->name('api')->middlewares(['cors']);
中间件
<?php namespace App\Middleware; use Juste\Http\Middleware\MiddlewareInterface; use Juste\Facades\Controllers\Controller as Helpers; class Authenticate extends Helpers implements MiddlewareInterface { public function handle(): mixed { if (!$this->user()) { return $this->redirect('login'); } return 1; } }
模型
<?php namespace App\Models; class User extends Model { protected $table = 'users'; protected $fillable = ['nom', 'prenom', 'email', 'password']; }
控制器
<?php namespace App\Controllers; use App\Controllers\Controller; use Juste\Facades\Mails\JusteMailer; class MailsController extends Controller { public function __construct() { $this->mustAuthenticate(false); } public function index() { $mail = new JusteMailer(); $object = [ 'to' => 'dev@kabirou-alassane.com', 'subject' => 'Message d\'un potentiel client', ]; $data = [ 'name' => $this->input('name', "Anonymous"), 'email' => $this->input('email', "anonymous@anonymous.com"), 'subject' => $this->input('subject', "Anonyme"), 'message' => $this->input('message', "Anonyme"), ]; $mail->view('mails/contact', $data)->sendEmail($object); return $this->back(); } }
作者
支持
如需支持,您可以通过电子邮件 dev@kabirou-alassane.com 联系我。如果您有任何问题或需要 Bravo 的帮助,请随时联系我。
许可证
本项目受 MIT 许可证的许可。