打包
除此之外,你也可以安装 Flarum 的 ,它帮你自动装好了所有工具。
Flarum 有便利的工具来为你生成扩展的框架,这样你就可以马上开始写代码了。打开终端并在论坛根目录运行下面的命令:
工具会向你咨询一些细节。扩展名是扩展独一无二的名称,只能包含数字、字母和连字符().命名空间用来分离你的代码;你可以把提供者名字加扩展名(例如 Tobscure\Attachments
)作为命名空间.
一旦你填完所有细节,工具会在你论坛根目录的 extensions
目录下创建一个新目录。完成这些可能会花费几分钟的时间。下面让我们看下生成了些什么:
- bootstrap.php 如果你的扩展被启用, Flarum 会在每当有请求时加载这个文件。这个文件是扩展启动的地方!你不应该修改它。
- js/ 存放扩展的 JavaScript 文件。你将在扩展客户端了解到更多。
- less/ 存放扩展的 CSS 文件。你将在了解到更多。
- locale/ 存放扩展的翻译文件。你将在国际化了解到更多。
- src/ 存放扩展的后端源代码,将被使用 PSR-4 标准的 Composer 自动加载。
就像你从介绍里了解到的一样,扩展工作的唯一方式就是监听和响应事件。让我们看下这是如何实现的。
我们将从头开始。如果你看过 bootstrap.php
,你会发现它返回一个扩展类的名字。如果扩展启用了,在每个请求的开始,Flarum 会包含这个文件并且把这个类注册为一个。这个类是你处理事务的关键。
我们再继续看,Flarum 在 目录下生成了这个类。如果你仔细看,你会发现这个独立的方法:
当事件系统建立起来后,Flarum 就会调用每个扩展服务提供者的 listen
方法。它传递一个 Laravel 的消息分发实体,因此你能如你所愿得监听事件。
好了,让我们再看下生成的 AddClientAssets
监听器。
这是我们注册事件监听器的地方。我们导入 event 类,然后在订阅者的 subscribe
方法里调用分发器的 listen()
, 传递的参数是我们希望订阅的事件名称和处理事件的方法。
这些特定的事件监听器用来处理默认的本地化语言包、JavaScript 和 CSS 文件,这些都是在创建扩展的时候由系统自动生成。你可以在章节了解到关于他们得更多信息。