dlunamontilla/dlunire

DLUnire具有模板、模型、控制器和路由系统。此外,还包含用于读取`.env.type`文件的语法分析器,这些文件作为具有静态类型的环境变量。

v0.1.26 2024-06-01 18:15 UTC

README

重要:文档尚未完成。尽可能更新有关该工具功能的文档。实际上,它具有类似于Laravel的模板引擎,并包含指令。

您可以通过以下链接获取该框架 在此处 或在终端中输入以下命令

composer create-project dlunamontilla/dlunire tu-app

在使用此工具之前,您需要安装一个用于Visual Studio Code的扩展来获取具有静态类型的变量环境的高亮显示。您需要创建的变量环境文件名为.env.type

安装变量环境语法高亮显示

前往Visual Studio Code的扩展安装程序,搜索DL Typed Environment,如果找不到,请点击此链接下载扩展

SASS安装

要编写SCSS代码,您需要安装SASS,通过以下命令

npm -g install sass

目录 | 结构

Raíz /
    |- /public/ → Directorio de ejecución de la aplicación. Ten en cuenta que es el directorio donde corre el proyecto.

    |- /app
        |- /Models → Directorio para crear modelos.
        |- /Auth → Para definir el sistema de autenticación.
        |- /Constants → Definir constantes globales. Requiere el uso de `require` ni `include`.
        |- /Controllers → Directorio de controladores.
        |- /Helpers → Creación de funciones globales personalizadas.
        |- /Interfaces → Definición de interfaces.
        
    |- /routes → Directorio de definición de rutas. No se requiere utilizar `include` ni `require`
    |- /resoures → Directorio para definir las plantillas con sintaxis similares a Laravel.
    |- /tests → Directorio para las pruebas automatizadas.
    |- /dlunire → Funcionalidad propias de `DLUnire`

安装

要使用此工具创建应用程序,您需要编写以下命令

composer create-project dlunamontilla/dlunire tu-app

然后,在上一步中,只需运行它即可

composer run dev

应用程序执行目录

应用程序执行目录是public/,但您可以更改其名称,但请确保它始终指向您用作应用程序执行目录的目录。

如果更改名称,也必须更改

"scripts": {
    "dev": "php -S localhost:3000 -t public/"
}

这个

"scripts": {
    "dev": "php -S localhost:3000 -t nuevo-directorio-de-ejecucion/"
}

然而,始终建议保留相同的名称。

当前支持的HTTP方法

微型框架支持的HTTP方法有:GETPOSTPUTPATCHDELETE

路由定义

您可以使用三种方式定义路由,但在定义路由之前,您必须了解路由的定义位置。

您可以在位于应用程序根目录的/routes目录中的任何文件中定义路由。

这里有三种定义方法

  1. 将一个字符串作为第二个参数传递

    use DLRoute\Requests\DLRoute;
    
    DLRoute::get('/', "DLUnire\\Controllers\\TestController@method");

    这样,将指向位于app/Controllers/TestController.php路径的控制器,同时执行method方法。

  2. 将一个callback作为第二个参数传递

    use DLRoute\Requests\DLRoute;
    
    DLRoute::get("/", function() {
       return view('vista');
    });

    您也可以在路由中传递参数

    use DLRoute\Requests\DLRoute;
    
    DLRoute::get("/user/{id}", function(object $param) {
       return view('vista', [
         "param" => $param
       ]);
    });
  3. 第三种方法是传递一个数组作为第二个参数

    use DLRoute\Requests\DLRoute;
    
    DLRoute::get("/user/{id}", [TestController::class, 'method'])

这种方法不仅更优雅、更强大。在定义路由的第一种和第三种方法中,都可以传递参数,并在定义控制器时自动捕获用户请求。

还可以简单地上传文件,并包括类型过滤。

控制器定义

让我们看看如何定义一个控制器,为了做到这一点,我们必须编写以下几行

namespace DLUnire\Controllers;

use Framework\Config\Controller;

final class TestController extends Controller {

    public function method(object $params): string {

        return view('vista', [
            "variable1" => "Valor de la variable 1",
            "variable2" => "Valor de la variable 2"
        ]);
    }
}

请注意,$param参数是可选的。您不需要定义它。

您定义的每个控制器都应位于/app/Controllers目录中,最好是这个目录。定义在该路径中的控制器是否位于子目录中无关紧要。

$param中定义的参数是在类似这样的路径中定义的

/ruta/{param1}/{param2}{paramN}

# Estos parámetros se convierten a esto de forma automática:
$param->param1;
$param->param2;
$param->paramN;

从控制器捕获值

您可以从请求控制器中捕获值,而无需以这种方式编写$_GET$_POST$_REQUEST

namespace DLUnire\Controllers;
use Framework\Config\Controller;

final class TestController extends Controller {

    public function method(object $param): string {
        /*
         * Valores de la petición
         *
         * @var array $values
         */
        $values = $this->get_values();

        return view('vista');
    }
}

$values的内容是一个关联数组,其中键是表单字段的名称或JSON,如果发送了JSON,则是字段的内容,显然是表单字段的值

用户输入验证

如果您想接收用户输入,例如电子邮件、UUID字符串或其他格式,可以编写以下几行

namespace DLUnire\Controllers;
use Framework\Config\Controller;

final class TestController extends Controller {

    public function method(object $param): string {

        /**
         * Correo electrónico
         * 
         * @var string|null $email
         */
        $email = $this->get_email('email');

        /**
         * Identificador único universal
         * 
         * @var string |null $uuid
         */
        $uuid = $this->get_uuid('uuid');

        return view('vista', [
            "email" => $email,
            "uuid" => $uuid
        ]);
    }
}

创建模型

要创建模型,可以在位于app/Models的文件中编写以下几行

namespace DLUnire\Models;

use DLTools\Database\Model;

final class Tabla extends Model {}

不需要定义其他内容,除非您想添加自定义功能。

当在模型中定义一个名为Tabla的类时,DLUnire将能够映射表名,例如,如果类名为Tabla,则它将自动指向tabla,如果表名有前缀,则必须在环境变量中使用静态类型指示它(我们稍后再讨论)。

如果要让您的Tabla类指向另一个表,只需按以下方式定义它

namespace DLUnire\Models;

use DLTools\Database\Model;

final class Tabla extends Model {
    protected static ?string $table = "otra_tabla";
}

就是这样。您不需要做更多的事情。

我如何使用模型与数据库交互?

要使用您刚刚创建的模型与数据库交互,只需调用其可用的方法,具体取决于您所处的上下文,例如,您将获取用户列表。

要获取用户列表,请确保您的类是PascalCase,并且名称与用户表相匹配,例如

namespace DLUnire\Models;

use DLTools\Database\Model;

class Users extends Model {}

然后,以这种方式查询用户列表

$users = Users::get();

此外,您也可以以这种方式查询带分页的用户列表

/**
 * Número de páginas
 * 
 * @var int $page
 */
$page = 1;

/**
 * Registros por página
 * 
 * @var integer $rows
 */
$rows = 100;

$users = Users::paginate($page, $rows);

继续

到目前为止,就到这里。这个教程还有很多内容要做,因为项目相当庞大。因为这个项目相当庞大。