blakvghost/juste

Juste 是项目 Bravo 的核心,我的个人 PHP MVC 框架,它本质上确保了对模型、控制器和基本模板引擎的理解。它还管理路由、中间件、数据库,特别是我的超级棒的 homemade mini ORM,当然也少不了易于发送邮件。

2.0.2 2023-07-10 13:24 UTC

This package is auto-updated.

Last update: 2024-09-20 07:10:57 UTC


README

Juste 是 Bravo 的核心,我的个人 PHP MVC 框架,它本质上确保了对模型、控制器和基本模板引擎的理解。它还管理路由、中间件、数据库,特别是我的超级棒的 homemade mini ORM,当然也少不了易于发送邮件。

Packagist Version (custom server) Packagist Version (custom server) Packagist Version (custom server)

文档

Bravo 的文档正在准备中,并将很快提供。请保持关注更新!

如何使用

要查看使用 Bravo 的示例,您可以参考 Bravo 项目。它作为演示项目,并将很快提供官方文档。

安装

要安装 Juste,您可以按照以下步骤进行

  1. 通过运行以下命令使用 Composer 需求此包

    composer require blakvghost/juste
  2. 安装包后,您可以将 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 许可证的许可。