【发布时间】:2015-03-16 12:34:08
【问题描述】:
我曾使用过 Cocoa for iOS、Qt (c++) 等框架,现在我正在学习 Laravel。我的主要问题是关于框架内的独特语法。例如,Laravel 有其独特的 IF 语句语法,它与 PHP 中使用的完全不同。
Laravel
@if(condition)
@else
// code
@endif
PHP
if (condition)
{
//code
}
else
{
//code
}
如何在框架中添加额外的语法?这是通过使用普通 PHP 完成的,还是他们修改了核心 PHP 代码以使其行为不同,以便识别新语法?
我想一个更简单的问题是,创建框架的人是否需要访问该语言的核心代码,或者他们只是使用该语言提供的内容并围绕它构建他们的框架?
类似thread,但没有回答我的问题。
【问题讨论】:
-
这是一种模板语言,它不修改PHP,不;它使用 PHP 来解析模板并渲染它。 Twig 会做不同的事情,Smarty 会再次做不同的事情。如何构建模板引擎,以及构建哪些功能是设计决策,需要在易用性和性能之间进行权衡。
-
从技术上讲,这不是 Laravel 语法,而是
blade语法...blade 只是一个模板引擎(Laravel 附带的默认模板引擎),例如twig或mustache或smarty -
这种语法只用在 templates 中,而不是在 Laravel 的任何地方。这些模板由模板引擎处理,该引擎根据自己的规则解析文件。核心 PHP 与它没有任何关系。您要问的是如何构建模板引擎或自定义解析器。为此,学习一些关于解析器的知识。它远没有你想象的那么神奇。
-
啊,现在明白了。谢谢大家的澄清。