Download the PHP package yzh52521/think-notification without Composer

On this page you can find all versions of the php package yzh52521/think-notification. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package think-notification

ThinkPHP6+ 消息通知扩展

支持mail sms easysms database等驱动

应用场景

发送手机验证码
发送验证邮件,找回密码邮件 订单状态变更
站内消息通知
...

安装

composer require yzh52521/think-notification

创建通知

通常每个通知都由一个存储在 app/notifications 目录下的一个类表示。如果在你的应用中没有看到这个目录,不要担心,当运行 make:notification 命令时它将为您创建:

这个命令会在 app/notifications 目录下生成一个新的通知类。每个通知类都包含一个 channels 方法以及一个或多个消息构建的方法比如 toMail 或 toDatabase,它们会针对特定的渠道把通知转换为对应的消息。

发送通知

使用 Notifiable Trait

通知可以通过两种方式发送: 使用 Notifiable 特性的 notify 方法或使用 Notification 门面

此 notify 方法需要接收一个通知实例参数:

请记住,你可以在任何模型中使用 Notifiable trait。而不仅仅是在 User 模型中。

使用 Notification Facade

另外,你可以通过 Notification facade 来发送通知,它主要用在当你需要给多个可接收通知的实体发送的时候,比如给用户集合发送通知。使用 Facade 发送通知的话,要把可接收通知实例和通知实例传递给 send 方法:

您也可以使用 sendNow 方法立即发送通知。即使通知实现了 ShouldQueue 接口,该方法也会立即发送通知:

发送指定频道

每个通知类都有一个 channels 方法,用于确定将在哪些通道上传递通知。通知可以在 mail、database、sms、easysms 频道上发送。

channels 方法接收一个 $notifiable 实例,这个实例将是通知实际发送到的类的实例。你可以用 $notifiable 来决定这个通知用哪些频道来发送:

通知队列化

注意:使用通知队列前需要配置队列并 开启一个队列任务。

发送通知可能是耗时的,尤其是通道需要调用额外的 API 来传输通知。为了加速应用的响应时间,可以将通知推送到队列中异步发送,而要实现推送通知到队列,可以让对应通知类实现 ShouldQueue 。如果通知类是通过 make:notification 命令生成的,你可以快速将它们添加到通知类:

一旦 ShouldQueue 接口被添加到您的通知中,您就可以像往常一样发送通知。 Thinkphp 将检测类上的 ShouldQueue 接口并自动将通知的传递排队:

如果您想延迟通知的传递,您可以设置 delay:

自定义通知队列连接: 默认情况下,排队通知将使用应用程序的默认队列连接进行排队。如果您想为特定通知指定一个不同的连接,您可以在通知类上定义一个 $connection 属性:

邮件通知

格式化邮件信息

如果通知支持作为电子邮件发送,您应该在通知类上定义一个 toMail 方法。 此方法将接收一个 $notifiable 实体并应返回一个 yzh52521\notification\message\Mail 实例。

Mail 类包含一些简单的方法来帮助您构建事务性电子邮件消息。 邮件消息可能包含文本行以及「动作的调用」。让我们看一个示例 toMail 方法:

自定义模板 使用 view() 不需要使用 greeting 、 line 、action 等参数 在 view 第二个参数传递

自定义发件人 默认情况下, 发件人地址在 config/mail.php 配置文件中定义。但是,您可以使用 from 方法指定特定通知的发件人地址:

其他用法 参考 yzh52521/think-mailer

数据库通知

必要条件 database 通知通道将通知信息存储在数据库表中。此表将包含通知类型等信息以及描述通知的 JSON 数据结构。 使用的模型必须 use HasDatabaseNotification Trait

您可以查询该表以在应用程序的用户界面中显示通知。但是,在您这样做之前,您需要创建一个数据库表来保存您的通知。您可以使用 notifications:table 命令生成具有正确表模式的 migration:

格式化数据库通知

如果通知支持存储在数据库表中,则应在通知类上定义 toDatabase 方法。这个方法将接收一个 $notifiable 实体并且应该返回一个普通的 PHP 数组。 返回的数组将被编码为 JSON 并存储在 notifications 表的 data 列中。让我们看一个示例 toDatabase 方法:

访问通知

一旦通知存储在数据库中,您需要一种方便的方式从您的通知实体访问它们. 必须实现 model 之前的关联关系

如果您只想检索「未读」通知,可以使用 unreadNotifications 关系。同样,这些通知将按 create_time 时间戳排序,最近的通知位于集合的开头:

将通知标记为已读# 通常,您希望在用户查看通知时将其标记为 “已读”。 yzh52521\notification\Notifiable trait 提供了 markAsRead 方法,它更新通知数据库记录中的 read_time 列:

但是,您可以直接在通知集合上使用 markAsRead 方法,而不是循环遍历每个通知:

您还可以使用批量更新查询将所有通知标记为已读,而无需从数据库中检索它们:

您可以 delete 通知以将它们从表中完全删除:

短信通知

SMS 通知由 Sendcloud 提供支持

必要条件 $user 发件人 $key sendcloud 申请的key

依赖扩展

格式化短信通知

收件人 to()

短信模版 template()

设置为彩信 isMultimedia()

设为语音短信 isVoice()

easysms 短信通知

依赖扩展 yzh52521/think-sms

sms 配置

config/sms.php

创建通知

自定义频道

think-notification 提供了一些通知频道,但你可能想编写自己的驱动程序,以通过其他频道传递通知。要开始,定义一个包含 send 方法的类。该方法应接收两个参数:$notifiable 和 $notification 在 send 方法中,你可以调用通知上的方法来检索一个由你的频道理解的消息对象,然后按照你希望的方式将通知发送给 $notifiable 实例:

一旦你定义了你的通知频道类,你可以从你的任何通知的 channels 方法返回该类的名称。在这个例子中,你的通知的 toVoice 方法可以返回你选择来表示语音消息的任何对象。例如,你可以定义自己的 VoiceMessage 类来表示这些消息:

自定义 VoiceMessage


All versions of think-notification with dependencies

PHP Build Version
Package Version
Requires php Version >=8.0.2
symfony/uid Version ^6.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package yzh52521/think-notification contains the following files

Loading the files please wait ....