自定义 Craft 命令
创建命令
介绍
通过使用 craft 命令和服务提供者给 Masonite 添加命令非常简单。如果您已经使用 Masonite 一段时间,那么您已经了解到了命令是非常重要的部分。创建命令并添加到 craft 来构建您可能经常使用的命令非常简单。
Masonite 使用 Cleo 包来创建和使用命令,有关如何使用命令,如何获取参数和选项以及如何在命令行上打印彩色文本请参考官方文档。
学习 Cleo 文档。
开始
您可以使用 craft 本身来创建命令:
$ craft command Hello
这样将创建一个带有样板代码的 app/commands/HelloCommand.py
文件,如下:
app/commands/HelloCommand.py
""" A HelloCommand Command """
from cleo import Command
class HelloCommand(Command):
"""
Description of command
command:name
{argument : description}
"""
def handle(self):
pass
让我们创建一个简单的 hello name 应用程序,将“ hello your-name” 打印到控制台。
在文档字符串中 command:name
的位置,我们将 hello
写进去,在参数部分,我们可以将 name
放那,如下所示:
app/commands/HelloCommand.py
""" A HelloCommand Command """
from cleo import Command
class HelloCommand(Command):
"""
Say hello to you
hello
{name : Your name}
"""
def handle(self):
pass
在 handle
方法内部,我们可以通过指定 self.argument('name')
来接收参数。简单的说:
app/commands/HelloCommand.py
""" A HelloCommand Command """
from cleo import Command
class HelloCommand(Command):
"""
Say hello to you
hello
{name : Your name}
"""
def handle(self):
print('Hello {0}'.format(self.argument('name')))
好了,现在,我们只需要将其添加到我们的 craft 命令中即可。
添加命令到 Craft
我们可以通过创建服务提供者并将命令注册到容器中来添加要制作的命令。 Craft 将在所有容器上自动运行所有注册方法,并检索所有命令。
让我们创建一个服务提供者:
$ craft provider HelloProvider
这将创建一个 app/providers/HelloProvider.py
文件,也就是我们的服务提供者。
app/providers/HelloProvider.py
''' A HelloProvider Service Provider '''
from masonite.provider import ServiceProvider
class HelloProvider(ServiceProvider):
def register(self):
pass
def boot(self):
pass
让我们导入我们的命令并注册到容器中。另外,因为我们只是将内容注册到容器中,所以我们可以设置 wsgi = False
,这样就不会在每个请求上运行而是在服务器启动之前运行它:
app/providers/HelloProvider.py
''' A HelloProvider Service Provider '''
from masonite.provider import ServiceProvider
from app.commands.HelloCommand import HelloCommand
class HelloProvider(ServiceProvider):
wsgi = False
def register(self):
self.app.bind('HelloCommand', HelloCommand())
def boot(self):
pass
确保您实例化了命令。另外,命令名称必须以 “Command” 结尾。 因此,绑定
HelloCommand
将起作用,但绑定Hello
无效。Craft 将匹配Command
结尾的命令,同时也区分大小写,确保Command
大写。
添加服务提供者
像往常一样,我们需要将我们的服务提供者添加到 config / providers.py
文件中的PROVIDERS
列表中:
config/providers.py
from app.providers.HelloProvider import HelloProvider
PROVIDERS = [
...
# Application Providers
UserModelProvider,
MiddlewareProvider,
# New Hello Provider
HelloProvider,
]
好,现在我们执行:
$ craft
我们将看到新的 hello
命令:
help Displays help for a command
hello Say hello to you
install Installs all of Masonite's dependencies
如果我们运行:
$ craft hello Joseph
将看到以下输出:
Hello Joseph
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。