modulusphp/hibernate

Modulus 的 Hibernate

安装: 88

依赖项: 4

建议者: 0

安全性: 0

星标: 2

关注者: 2

分支: 0

开放问题: 4

类型:package

1.9.3.4 2019-11-09 09:31 UTC

README

此组件负责 Modulus 的缓存,处理队列,并扩展 Eloquent 模型。

安装

此包随 Modulus 框架自动安装。

composer require modulusphp/hibernate

入门

会话(alpha)

更安全的会话处理器。Hibernate 的会话处理器更安全,支持的存储驱动程序比 Modulus 默认的 Blulight 会话处理器更多。

要切换到 Hibernate 的会话处理器,请转到公共目录中的 index.php 文件,并删除 Blulight

然后注册以下中间件到 HttpFoundation 类中

\Modulus\Hibernate\Session\Middleware\StartSession::class,
\Modulus\Hibernate\Session\Middleware\ShareSessionData::class,

完成这些后,转到 VerifyCsrfToken 类并扩展 Hibernate 的 VerifyCsrfToken

注意,这可能不起作用

use Modulus\Hibernate\Session\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
  ...

现在,使用以下内容更新 session.php 配置文件

<?php

return [
  'default' => env('SESSION_CONNETION', 'file'),

  'name' => env('SESSION_NAME', 'modulus'),

  'connections' => [
    'file' => [
      'driver' => 'file',
      'files' => storage_path('framework/sessions')
    ],

    'redis' => [
      'driver' => 'redis',
      'connection' => 'session'
    ]
  ]
];

这样就可以了!

注意,这仍然是工作进展中,因此不要在生产环境中使用

日志记录

Hibernate 的日志记录器旨在替换 @atlantisphp 的 telemonlog 包。建立在 Monolog 之上,您将获得更稳定且广泛支持的日志库。

有关更多信息,请参阅配置 logging.php

队列工作者(alpha)

队列工作者允许您轻松地在后台执行任务。这是通过使用 Supervisor 实现的。

在您开始创建或执行队列之前,您需要创建一个新表来存储您的队列。

创建迁移

php craftsman queue:table

如果您正在使用 sqlite 作为队列的默认数据库驱动程序(您应该这么做),您将需要创建一个新的 .queues 文件

touch storage/framework/data/.queues

有关更多信息,请参阅 config/queue.php.env

不用担心您的队列存储在 sqlite 文件中,所有队列都使用 APP_KEY 加密。

运行迁移

php craftsman migrate all

要创建新作业,只需运行以下命令

php craftsman craft:job <NameOfTheJob>

要执行新创建的作业

dispatch(new \App\Jobs\<NameOfTheJob>);

您还可以通过分钟、小时、天、月甚至年延迟作业。这意味着,您可以执行仅在您希望其运行时才运行的作业

dispatch(new \App\Jobs\<NameOfTheJob>, \Carbon\Carbon::now()->addMinutes(10));

此作业将在 10 分钟后运行。

注意:您的 supervisor 工作者必须调用 craftsman queue:work --process=1

Hibernate 缓存

Hibernate 缓存是一个简单的缓存系统,允许您存储对象、集合、数组和其他对象类型。Hibernate 缓存允许您永久缓存或指定缓存何时应被移除或何时应过期。

cache('user', [
  'name' => 'Donald',
  'age'  => 21,
  'city' => 'East Rand'
]);

上面的代码将保留用户 array,直到我们决定移除它。

如果我们想保留用户 array 一个月,我们只需要简单地添加一个 Carbon 实例作为第三个参数

cache('user', [
  'name' => 'Donald'
  'age'  => 21,
  'city' => 'East Rand'
], \Carbon\Carbon::now()->addMonth());

现在,用户 array 将在一个月后被自动从缓存中移除。

注意:您必须添加一个 cron,每分钟执行一次 craftsman schedule:run* * * * *

配置

默认情况下,Hibernate 缓存可以使用基于 redis 和/或 file 的缓存。基于 file 的缓存用作默认缓存驱动程序。您可以通过将 .env 中的 HIBERNATE_CACHE 设置为 redis 来轻松地将 redis 用作默认缓存驱动程序。

方法

以下是一些帮助您入门的方法。

Hibernate 邮件

发送邮件从未如此简单。Hibernate Mail 是基于 PHPMailer 构建的邮件发送包。创建布局和发送邮件更加容易和流畅。

Mail::to('example@something.domain')->queue(new WelcomeEmail('Donald Pakkies'));

上面的代码将在后台向 "example@something.domain" 发送欢迎邮件。

开始使用 Hibernate Mailer

您可以通过运行以下命令创建一个新的电子邮件类模板:

php craftsman craft:mail TestMail

您的电子邮件类模板应如下所示:

<?php

namespace App\Mail;

use Modulus\Hibernate\Mail\Mailable;

class TestMail extends Mailable
{
  /**
   * Handle mailable
   *
   * @return void
   */
  public function handle()
  {
    //
  }

  /**
   * Build email
   *
   * @return Mailable
   */
  public function build()
  {
    return $this;
  }
}

在您进行其他操作之前,您需要在其视图中创建一个新的电子邮件视图模板。

touch resources/views/testemail.medusa.php

之后,我们可以开始设计我们的电子邮件视图模板。以下是一个快速示例:

{% email_layout %}

{% section('main') %}

  <h3>Hello there</h3>

  <p>This is your first custom Email View Template.</p>

{% endsection %}

{% section('footer') %}

  {% email_footer %}

{% endsection %}

{% email_layout %} 指令将为您的视图添加所有必要的 CSS 样式和 HTML 代码,使您的视图看起来更专业。

{% email_layout %} 指令包括 mainfooter 部分。{% email_footer %} 指令将为所有从您的应用程序发送的电子邮件底部添加版权文本。这里将使用 env('APP_NAME')(您的应用程序名称)。

您还可以在电子邮件视图模板中包含操作按钮。使用 {% email_action("title", "url", "alignment") %} 帮助您在视图中添加按钮。

{% email_action("Go to Google", "https://google.com", "left") %}

您可以将对齐方式设置为 "right"、"left" 或 "center"。

要使您的电子邮件类模板加载您刚刚创建的电子邮件视图模板,您只需在 build 方法中指定视图即可。

  /**
   * Build email
   *
   * @return Mailable
   */
  public function build()
  {
    return $this->view('testemail');
  }

您还可以使用 with 方法从电子邮件类模板传递变量到电子邮件视图模板。

  /**
   * Build email
   *
   * @return Mailable
   */
  public function build()
  {
    return $this->view('testemail')
                ->with([
                  'name' => 'Donald'
                ]);
  }

然后您可以像这样访问变量:

{% email_layout %}

{% section('main') %}

  <h3>Hello {{ $name }}</h3>

  <p>This is your first custom Email View Template.</p>

{% endsection %}

{% section('footer') %}

  {% email_footer %}

{% endsection %}
测试电子邮件模板

您可以通过从路由返回电子邮件类模板的实例来轻松测试您的电子邮件模板。

Route::get('/test', function () {
  return new App\Mail\TestMail;
});

安全性

如果您发现任何安全问题,请通过电子邮件 donaldpakkies@gmail.com 来报告,而不是使用问题跟踪器。

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件