我曾经使用过类似iOS、Qt (c++)的Cocoa之类的框架,现在我正在学习Laravel。我的主要问题是关于框架中独特的语法。例如,Laravel对于IF语句有其独特的语法,这与PHP中使用的语句完全不同。
拉勒维尔
@if(condition)
@else
// code
@endifPHP
if (condition)
{
//code
}
else
{
//code
}如何在框架中添加其他语法?这是通过使用普通PHP完成的,还是他们修改了核心PHP代码,使其行为不同,从而识别新的语法?
我想一个更简单的问题是,创建框架的人是否需要访问语言的核心代码,或者他们只是使用语言提供的内容,并以此为基础构建他们的框架?
类似的线程,但没有回答我的问题。
发布于 2015-03-16 14:52:24
要回答你的特殊问题:
如何在框架中添加其他语法?这是通过使用普通PHP完成的,还是他们修改了核心PHP代码,使其行为不同,从而识别新的语法?
是的,这是用叶片模板发动机完成的。刀片基本上解析文件(*.blade.php),并将其序列替换为平原php,稍后执行。可以说,PHP本身已经是一种模板语言,但制造者似乎认为这不够容易,也不足以表达。如果您想了解更多关于它的信息,请查看文档或观看相应的Laracasts系列节目(L4-叶片基础、L4-母版-页、L5-Blade101 101)。看看BladeCompiler,看看是如何做到的。
创建框架的人是否需要访问语言的核心代码,或者他们只是使用语言提供的内容并构建他们的框架?
嗯,我不确定这是否适用于100%的框架,但在大多数情况下,我会说是。不过,它们可能会使用没有直接包含在基本语言/技术中的其他技术(比如.NET for C#,它基于一些非c#组件),但我强烈怀疑许多框架(如果有的话)会改变基础技术的核心。
顺便说一下。为非开源技术创建框架是可能的。在这些情况下,不可能修改基本技术的核心,因为您根本无法访问它。
框架可以被视为其基本技术的包装器,其目的是使一些(经常需要的)任务对开发人员来说更容易。但我所知道的那些并不能改变它的核心。
https://stackoverflow.com/questions/29076933
复制相似问题