当前位置: 首页 > news >正文

用vscode做网站上海搬家公司收费价目表

用vscode做网站,上海搬家公司收费价目表,网站免费优化工具,企业网站排名提升软件首先#xff0c;我们通过几个要点来解释 Blade 引擎的工作原理。 您选择一个 Blade 模板进行渲染。引擎使用一系列正则表达式来解析和编译模板。该引擎生成一个普通的 PHP 文件并将其写入磁盘#xff08;以便将其缓存以供将来渲染#xff09;。包含 PHP 文件并使用输出缓冲…首先我们通过几个要点来解释 Blade 引擎的工作原理。 您选择一个 Blade 模板进行渲染。引擎使用一系列正则表达式来解析和编译模板。该引擎生成一个普通的 PHP 文件并将其写入磁盘以便将其缓存以供将来渲染。包含 PHP 文件并使用输出缓冲区来捕获生成的 HTML。 该过程中最有趣的步骤是使用 RegEx 模式从模板中提取各种内容并生成适当的 PHP 代码。其他模板引擎使用更传统的标记器和解析器来处理模板但由于 Blade 或多或少只是常规 PHP 代码的语法糖因此它可以以更简单的方式完成工作。 这意味着您基本上总是在处理可能包含普通 PHP 代码的任意字符串。 #自定义指令 您可以编写自己的 Blade 指令。这样您就可以在指令中隐藏大量样板代码并简化 Blade 模板。 Blade::directive(example, function (string $expression) {// Logic goes here. }); 让很多新的 Laravel 开发人员感到困惑的是自定义指令仅接收回调函数的一个参数。 假设example()此处的指令设计为接受 2 个参数 example(Hello, , Ryan) 经验较少的 Laravel 开发人员可能希望回调函数接收两个参数对应于我们传递给实际指令的两个参数。 但事实并非如此。相反我们从 Blade 模板收到一个包含文字的字符串。 Blade::directive(example, function (string $expression) {assert($expression Hello, , Ryan); }); 因此我们实际上不想在回调中编写常规 PHP 代码并返回值而是想返回一串 PHP 代码。然后该 PHP 代码将插入到生成的模板中以代替原始指令。 Blade::directive(example, function (string $expression) {return ?php echo implode( , [{$expression}]); ?; }); 有一些软件包可以扩展 Laravel 以支持更合乎逻辑的“在回调中接收真实参数”方法但事实上我们这里有一个字符串意味着我们可以做一些有趣和有创意的事情。 #命名参数 自定义 Blade 指令通常会为常规 PHP 函数提供包装器。PHP 8.0 引入了“命名参数”的概念允许您无序地将参数传递给函数而是提供参数的名称。 function hello(string $name, string $greeting Hello, ) {return $greeting . $name; }hello(greeting: Greetings, , name: Ryan); 如果我们将这个hello()函数包装在 Blade 指令中我们实际上仍然可以使用命名参数 Blade::directive(hello, function (string $expression) {return ?php echo hello({$expression}); ?; }); hello(greeting: Greetings,, name: Ryan) 由于括号之间的文本只是插入到我们的表达式中因此命名参数会逐字传递给底层hello()函数。 很酷 #魔法变量 大多数 Laravel 开发人员可能都曾在他们的项目中使用过“魔法变量”。最常见的两个例子可能是块$loop内可用的变量foreach和块$message内的变量error。 Laravel 附带一个auth指令允许您根据用户是否登录有条件地执行操作。这很酷但我想发送自己的auth指令将当前用户作为变量注入到代码块中$user。 有趣的是您实际上可以用自定义指令覆盖 Laravel 自己的指令因为 Blade 编译器会先检查自定义指令。但我不建议这样做所有这些代码纯粹是为了教育和演示目的 Blade::directive(auth, function (string $expression) {$guard $expression ?: ();return ?php if (auth()-guard{$guard}-check()): ? .?php $user auth()-user(); ?; });Blade::directive(endauth, function () {return ?php unset($user); ? . ?php endif; ?; }); 上面的代码为每个指令返回多个语句。启动和结束块if以及创建和取消设置魔法$user变量。 该代码并非 100% 可靠请不要在您自己的应用程序中这样做。 我们可以将指令编译成任意 PHP 代码这为很多事情带来了一些很酷的机会。我甚至开发了几个利用这一点的软件包来缓存 Blade 代码块甚至创建内联部分代码 blade 缓存指令blade 捕获指令 #领域特定语言 我们可以利用 Blade 指令的字符串特性的另一种方法是在 Blade 指令内编写我们自己的特定领域语言。 很多服务器端模板引擎都有“过滤器”的概念。下面是 Twig 的一个示例 {{ names | join(,) | lower }} 是names传递给函数的变量join()。然后的输出join(,)被发送到lower然后该操作的结果被输出到模板中。 如果我们想在 Blade 指令中执行相同操作也许是这样的 filter($names | join(,) | lower) 第一步是解析指令内部的内容。为了获取所有不同的过滤器和变量我们可以按标记拆分表达式|删除每个部分周围的多余空格。 $parts array_map(trim(...), explode(|, $expression)); 为了简单起见我们假设第一部分始终是一个有效的 PHP 表达式。 $subject $parts[0]; $filters array_slice($parts, 1); 每个过滤器都将映射到一个Closure它接受当前的值$subject以及我们传递给过滤器的任何参数。我们需要一个地方来存储这些回调函数。 警告您将要看到的代码包含魔法。 class Filters {protected array $filters [];public function __construct(protected mixed $subject){$this-addFilter(join, function (array $subject, string $glue ) {return implode($glue, $subject);});$this-addFilter(lower, function (string $subject) {return strtolower($subject);});}public function addFilter(string $name, Closure $callback): void{$this-filters[$name] $callback;}public function get(): mixed{return $this-subject;}public function __call(string $name, array $args){if (!isset($this-filters[$name])) {throw new Exception(Unrecognised filter [{$name}].);}$this-subject $this-filters[$name]($this-subject, ...$args);return $this;}public function __get(string $name){return $this-{$name}();} } 每个过滤器在实例化时都会向类注册。要实际调用过滤器您可以调用类中不存在的方法或访问不存在的属性。 然后Blade 指令需要将过滤器字符串转换为对象的一系列方法调用Filters。 return sprintf(PHP ?php echo (new \App\Filters(%s))-%s-get(); ? PHP,$subject,implode(\n -, $filters) ); 将$subject传递给构造函数然后每个过滤器将作为方法或属性链接到对象上。这会触发对象上的__call()或方法从而运行过滤器。__get()$subject 然后在最后-get()调用该方法来检索渲染模板中的最终值和输出。 我警告过你这里有魔法。 因此上面的 Blade 示例将转换为如下形式 echo (new \App\Filters($names))-join(,)-lower-get(); 通过[Ryan, Jane, John]这组过滤器将产生ryan,jane,john。 这是一些非常奇怪和古怪的东西 - 你可能永远不想在实际应用程序中使用它们 - 但无论如何玩弄它们还是很酷的。 也许您会采纳其中的一些想法并构建一些自己的很酷的 Blade 指令以达到有趣和神奇的目的。
http://www.hkea.cn/news/14571235/

相关文章:

  • 西安市社交网站制作公司如何注册个人工作室
  • 房产交易网站微商好货源app下载
  • 网站开发人员职位网站建设基础ppt
  • 国内工业设计网站大连专业app开发设计
  • 工程信息网站谁做廊坊网站建设廊坊网络公司驻梦
  • 大气物流网站模块青海西宁学做网站在哪
  • 光华路网站建设怎么制作一个网站教程
  • 做网站北京赤峰做网站的公司
  • 网站设计错误用手机域名做网站
  • 简述网站建设及维护的全过程html网页制作网站
  • 腾冲市住房和城乡建设局网站亚马逊品牌备案网站怎么做
  • 网站运营方法天津智能网站建设找哪家
  • 服装公司电子商务网站建设策划书四合一网站建设
  • 网站seo软件协会网站建设需要注意什么
  • 安徽省建设行业安全协会网站网站建设模拟实训题
  • 做爰全过程网站免费的视频教程寻找五屏网站建设
  • 帝国cms7.0网站搬家换域名换空间等安装教程wordpress数据库访问优化
  • 河北师大科技楼网站建设普通二本软件工程薪水
  • 如何写网站建设方案网站建设哪家好首推万维科技
  • 网站开放培训dede网站地图位置
  • 又一个wordpress站点网络服务公司经营范围
  • 有个虚拟服务器建设网站制作介绍的网站
  • 开锁公司网站建设进销存软件排行榜前十名
  • 有域名了如何建网站网站制作报价图片欣赏
  • 网站开发基本过程网站推广怎么做与发布
  • 网站怎样做全国地区推广淘宝网站是谁做的
  • 网站模板视频教程网站备案信息页面
  • 网站市场做烂了seo算法是什么
  • 苏州做网站0512jinyan广州海珠区发布
  • 电脑维护网站模板优化网站标题名词解释