我使用过像Cocoa for iOS,Qt(c ++)这样的框架,我现在正在学习Laravel。我的主要问题是框架内的独特语法。例如,Laravel有其独特的IF语句语法,它与PHP中使用的语法完全不同。
Laravel
@if(condition)
@else
// code
@endif
PHP
if (condition)
{
//code
}
else
{
//code
}
如何在框架中添加其他语法?这是通过使用普通PHP还是修改核心PHP代码来使其行为不同以便识别新语法?
我想一个更简单的问题是,创建框架的人是否需要访问该语言的核心代码,或者他们只是使用该语言提供的内容并构建其框架?
类似thread,但没有回答我的问题。
答案 0 :(得分:2)
回答您的具体问题:
如何在框架中添加其他语法?这是通过使用普通PHP还是修改核心PHP代码来使其行为不同以便识别新语法?
是的,这是使用blade templating engine完成的。 Blade基本上解析文件(*.blade.php
)并用普通的php替换它的序列,稍后会执行。 PHP它的自我已经是一种模板语言可以这么说,但制造商似乎认为这不容易或表达得足够多。如果您想了解更多相关信息,请查看文档或观看相应的Laracasts剧集(L4-Blade Basics,L4-Master-Pages,L5-Blade101)。看看BladeCompiler,看看这是如何完成的。
创建框架的人是否需要访问该语言的核心代码,或者他们只是使用该语言提供的内容并围绕该框架构建其框架
好吧,我不确定这是否适用于100%的框架,但在大多数情况下,我会说是。但是,它们可能使用其他技术而不是直接包含在基本语言/技术中(例如.NET for C#i假设,它基于一些非c#组件),但我强烈怀疑manym,(如果有的话)框架改变基础技术的核心。
顺便说一句。可以为非开源技术创建框架。在这些情况下,由于您根本无法访问它,因此无法修改基础技术的核心
框架可以被视为围绕其基础技术的Wrappers,旨在使开发人员更容易完成一些(通常需要的)任务。但是我知道的那些并没有改变其基础的核心。