Facade 机制
Facades(门面) 是一种访问 Service Container(服务容器) 类的简单方法,而无需从 Service Container(服务容器) 中创建它们。
概览
Facades(门面) 只是解析 Service Container(服务容器) 中的键的快捷方式。而不是这样做:
application.make("mail").send()你可以这样做:
from masonite.facades import Mail
Mail.send()要导入任何内置 Facades 门面门面类,你可以从 masonite.facades 命名空间导入它们:
from masonite.facades import Request
def show(self):
    avatar = Request.input('avatar_url')内置门面类
Masonite 附带多个 Facades 门面,你可以开箱即用:
- Auth
- Broadcast
- Config
- Dump
- Gate
- Hash
- Loader
- Mail
- Notification
- Queue
- Request
- Response
- Session
- Storage
- View
- Url
创建自己的 Facades 门面
创建自己的 Facades 门面很简单:
from masonite.facades import Facade
class YourFacade(metaclass=Facade):
  key = 'container_key'然后导入并使用你的 Facades 门面:
from app.facades import YourFacade
YourFacade.method()To benefit from code intellisense/type hinting when using Facade (e.g. in VSCode editor) you should create a .pyi file just next to your facade file class to add type hinting to your new facade.
要在使用 Facade(例如在 VSCode 编辑器中)时从代码智能感知/类型提示中受益,你应该在Facade 文件类旁边创建一个 .pyi 文件,以便为新门面添加类型提示。
然后在这个 Facade 中你应该声明你的类型化方法。这是邮件外观类型提示的部分示例:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from ..mail import Mailable
class Mail:
    """Handle sending e-mails from Masonite via different drivers."""
    def mailable(mailable: "Mailable") -> "Mail":
        ...
    def send(driver: str = None):
        ...请注意:
- 方法代码不存在,但替换为 ...。
- 方法不接收 self作为第一个参数。因为在调用外观时,我们并没有真正实例化它(即使我们获得了绑定到容器的对象实例)。这允许具有正确的类型提示行为。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
 
           Masonite 中文文档
 Masonite 中文文档 
         
         
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号