dlunamontilla / dltools
处理请求并对数据库进行查询
Requires
- php: >=8.0
- dlunamontilla/dlroute: ^1.3
- enshrined/svg-sanitize: ^0.16.0
- league/commonmark: ^2.3
- michelf/php-markdown: ^2.0
- phpmailer/phpmailer: ^6.8
Requires (Dev)
- phpunit/phpunit: ^10.4
- dev-master
- v0.1.50
- v0.1.49
- v0.1.48
- v0.1.47
- v0.1.46
- v0.1.45
- v0.1.44
- v0.1.43
- v0.1.42
- v0.1.41
- v0.1.40
- v0.1.39
- 0.1.38
- v0.1.37
- v0.1.36
- v0.1.34
- v0.1.33
- v0.1.32
- v0.1.31
- v0.1.30
- v0.1.29
- v0.1.28
- v0.1.27
- v0.1.26
- v0.1.25
- v0.1.24
- v0.1.23
- v0.1.22
- v0.1.21
- v0.1.20
- v0.1.19
- v0.1.18
- v0.1.17
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.0.27
- v0.0.26
- v0.0.25
- v0.0.24
- v0.0.23
- v0.0.22
- v0.0.21
- v0.0.20
- v0.0.19
- v0.0.18
- v0.0.17
- v0.0.16
- v0.0.15
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-dev
This package is auto-updated.
Last update: 2024-08-31 18:49:19 UTC
README
安装
要安装 dlunamontilla/dltools
,需要先安装 composer。若要安装 composer,请访问其官方网站 https://getcomposer.org.cn 并按照说明进行操作。
composer require dlunamontilla/dltools
重要:必须先安装 composer 才能安装此工具。若要安装 composer,请访问其官方网站 https://getcomposer.org.cn 并按照说明进行操作。
特性
该工具包括以下功能
- 查询构建器。
- 模型。
- 静态类型环境变量读取,同时支持读取环境变量文件。
要为应用程序与数据库引擎进行认证设置环境变量,创建一个名为 .env.type
的文件,并添加以下行
# Indica si la aplicación debe correr o no en producción:
DL_PRODUCTION: boolean = false
# Servidor de la base de datos:
DL_DATABASE_HOST: string = "localhost"
# Puerto del motor de la base de datos:
DL_DATABASE_PORT: integer = 3306
# Usuario de la base de datos:
DL_DATABASE_USER: string = "tu-usuario"
# Contraseña de la base de datos:
DL_DATABASE_PASSWORD: string = "tu-contraseña"
# Nombre de la base de datos:
DL_DATABASE_NAME: string = "tu-base-de-datos"
# Codificación de caracteres de la base de datos. Si no se define,
# entonces, el valor por defecto serà `utf8`:
DL_DATABASE_CHARSET: string = "utf8"
# Colación del motor de base de datos. Si no se define, el valor por
# defecto será `utf8_general_ci`:
DL_DATABASE_COLLATION: string = "utf8_general_ci"
# Motor de base de datos. Si no se define esta variable, el valor
# por defecto será `mysql`:
DL_DATABASE_DRIVE: string = "mysql"
如果还需要发送电子邮件,请复制以下行
# Usuario de correo electrónico. Tome en cuenta que no debe colocar
# comillas de ningún tipo, porque no se evaluaría si es un correo:
MAIL_USERNAME: email = no-reply@example.com
# Contraseña del correo electrónico:
MAIL_PASSWORD: string = "Contraseña de correo"
# Puerto del servidor SMTP con certificado SSL para tu correo
# electrónico:
MAIL_PORT: integer = 465
# Nombre de la empresa que envía el correo a través de su web
# o aplicación:
MAIL_COMPANY_NAME: string = "Empresa, marca o tu marca personal"
# Correo de contacto:
MAIL_CONTACT: email = contact@example.com
重要:为了语法高亮,请安装 DL Typed Environment
如果需要安装 Google API 密钥以安装 reCAPTCHA
,请在 .env.type
文件中添加以下行
# Estas variables son opcionales. Si desea establecer un reCAPTCHA
# de Google, puedes definirlas aquí:
G_SECRET_KEY: string = "<tu-llave-privada>"
G_SITE_KEY: string = "<tu-llave-del-sitio>"
工具使用
模型
如果要在模型中创建一个扩展类,请编写以下代码
<?php namespace TuApp\Models; use DLTools\Database\Model; class Products extends Model {}
其中 Products
是引用 products
表的类。如果应用程序的表使用了前缀,例如 wp_
,则需要在 .env.type
文件中定义该前缀
DL_PREFIX: string = "wp_"
或者,如果您定义的环境变量不使用任何文件,请确保在您的托管服务提供商(例如 Heroku)中定义它,变量名应为
DL_PREFIX = "wp_"
如果要在 Products
模型中设置不同的表名,只需按以下方式定义即可
class Products extends Model { protected static ?string $table = "otra_tabla"; }
此外,它还提供了一些可用于与数据库交互的方法,例如,您可以从控制器中调用这些方法
final class TestController extends Controller { /** * Ejemplo de interacción con el modelo `Products`. * * @return array */ public function products(): array { new Products(); /** * Devuelve, máximo 100 registros * * @var array $register */ $register = Products::get(); /** * Devuelve un número total de registros almacenados en la tabla * `products`. * * @var integer $count */ $count = Products::count(); /** * Número de páginas * * @var integer */ $page = 1; /** * Número de registro por página. * * @var integer */ $paginate = Products::paginate($page, $rows); return [ "count" => $count, "register" => $register, "paginate" => $paginate ] } }
前面的代码段是 Products
模型的基本示例,但不仅限于获取记录的方法,还包括存储新记录的方法,例如
final class TestController extends Controller { public function products(): array { $products = new Products(); $products->product_name = $products->required('product_name'); $products->product_description = $product->required('product_description'); $products->save(); return []; } }
发送电子邮件
该工具使用 PHPMailer
发送电子邮件。
要从控制器发送电子邮件,可以按照以下方式操作
final class TestController extends Controller { /** * Ejemplo de envío de correos electrónicos. * * @return array */ public function mail(): array { $email = new SendMail(); return $email->send( $email->get_email('email_field'), $body->get_required('body_field') # Puede contener código HTML ); } }
此外,您需要在 .env.type
文件中预先添加以下行才能发送电子邮件
# Servidor SMTP:
MAIL_HOST: string = "smtp.su-hosting.com"
# Cuenta de correo que enviará su correo electrónico:
MAIL_USERNAME: email = no-reply@su-dominio.com
# Contraseña de su cuenta de correo `no-reply@su-dominio.com`:
MAIL_PASSWORD: string = "contraseña"
# Correo electrónico en el que recibirá respuesta
MAIL_CONTACT: email = contact@su-dominio.com
认证系统
要实现基本的认证系统,应在 DLUser
中创建一个扩展类,如下所示
use DLTools\Auth\DLAuth; use DLTools\Auth\DLUser; class Users extends DLUser { public function capture_credentials(): void { /** * Autenticación del usuario * * @var DLAuth */ $auth = DLAuth::get_instance(); $this->set_username( $this->get_required('username') ); $this->set_password( $this->get_required('password') ); $auth->auth($this, [ "username_field" => 'username', "password_field" => 'password', "token_field" => 'token' ]); } }
文档
这份文档将逐步更新关于此工具的完整使用说明。这只是其中一部分。