这篇文章给大家分享的是有关Laravel宏指令宏观的用法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
宏指令允许你添加自定义功能到Laravel的内部组件里去。
让我们以一个简单的请求门面方法为例。
要求::宏(& # 39;介绍# 39;,,function (名字),{ ,,,echo & # 39; Hello & # 39;,只name 美元;只& # 39;! & # 39;; }); 要求::介绍(& # 39;迦勒# 39;);,//,outputs “Hello 迦勒!“
一个更加实用的请求宏指令是用于检测当前的TLD(顶级域:. com, . net, .org,等…)。
要求::宏(& # 39;tldIs& # 39;,, function (TLD), { ,,,return Str::是(& # 39;* # 39;公司,只tld美元,美元这→根()); }); 要求::tldIs (& # 39; com # 39;),//, returns true for app.com 请求::tldIs (& # 39; dev # 39;),//, returns false for app.com
你会注意到Laravel自动绑定这个到请求的美元上线文中,而不是在一个已经定义宏的类里。比如:
class AppServiceProvider { ,,,public function 引导() ,,,{ ,,,,,,,请求::宏(& # 39;上下文# 39;,,function (), { ,,,,,,,,,,,return get_class ($); ,,,,,,,} ,,,} … 要求::上下文(),,//,returns & # 39;阐明\ Http \请求# 39;//,instead of & # 39;应用\ AppServiceProvider& # 39;
让我们看一个更高级的示例。此宏有条件地基于当前TLD在模型上添加一个地方语句。
建设者::宏(& # 39;whenTldMatches& # 39;,,函数(TLD美元,,回调),{ ,,,if (要求::tldIs (tld)美元),{ ,,,,,,,call_user_func(回调→美元bindTo ($)); ,,,} ,,,return 美元; }); SomeModel:: whenTldMatches (& # 39; org # 39;,, function (), { ,,,这个→美元,(& # 39;id # 39;,, & # 39;祝辞& # 39;,,5); })→get ();//,applies →()的地方,在,app.org 上应用,而不在,app.com 上应用
<强>我们应该在哪里定义它们? 强>
服务提供者为为您的应用程序定义宏的好地方。<代码>应用\ \供应商AppServiceProvider引导()代码>是<代码>我> 代码一个很好的注入点,但是它很快就变得臃肿。
下一步是创建一个<代码>应用\ \供应商MacrosServiceProvider> 代码并注册在<代码>配置/应用程序。php代码>里。如果某宏与之相关,我可能会创建一个<代码>应用\ \供应商TldAwareServiceProvider> 代码来容纳所有与<代码> TLD> 代码相关的宏。
<强>哪些组件是Macroable ? 强>
宏可以再任何具有Macroable特性的类上定义。下面是一个Macroable的门面和类的列表
<强>门面强>
●●缓存文件
●朗
●●请求响应
●●路线URL
<强>照亮类强>
●照亮\缓存\库
●照亮\控制台\调度\事件
●照亮\雄辩的\ \数据库建设者
●照亮\雄辩的\ \数据库关系
●照亮\ \数据库查询\ Builder
●照亮、文件系统、文件系统
●照亮\ \测试基础\ TestResponse
●照亮\ Http \ RedirectResponse
●照亮\ Http请求\
●照亮\ Http \ UploadedFile
●照亮\路由\ ResponseFactory
●照亮\路由\路由器
●照亮\路由\ UrlGenerator
●照亮Arr \支持\
●照亮\ \支持收集
●照亮\支持\ Str
●照亮\ \翻译翻译
●照亮\ \验证规则
感谢各位的阅读!关于“Laravel宏指令宏观的用法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!