2015-03-16 4 views
0

Я работал с такими фреймворками, как Cocoa для iOS, Qt (C++), и теперь я изучаю Laravel. Мой главный вопрос - о уникальном синтаксисе внутри фреймворков. Например, Laravel имеет свой уникальный синтаксис для операторов IF, который полностью отличается от того, который используется в PHP.Понимание того, как создаются рамки

Laravel

@if(condition) 

@else 
// code 

@endif 

PHP

if (condition) 
{ 
    //code 
} 
else 
{ 
    //code 
} 

Как дополнительный синтаксис будет добавлен в рамках? Это делается с помощью простого PHP или они модифицировали основной PHP-код, чтобы заставить его вести себя по-другому, чтобы он распознавал новый синтаксис?

Я думаю, более простой вопрос: люди, создающие фреймворки, должны иметь доступ к основному коду языка, или они просто работают с тем, что предлагает язык, и строят свои рамки вокруг этого?

Аналогичные thread, но не отвечает на мой вопрос.

+8

Это язык шаблонов, и он не изменяет PHP, нет; он использует PHP для анализа шаблона и его рендеринга. Twig сделает это по-другому, и Smarty сделает это по-другому. Как создать механизм шаблонов и какие функции для сборки - это конструктивные решения, которые имеют простоту использования и компромисс производительности. – halfer

+5

Технически, это не синтаксис Laravel, это синтаксис «лезвия» ... лезвие - это просто шаблонный движок (механизм шаблонов по умолчанию, который поставляется с Laravel), например 'twig' или' mustache' или 'smarty' –

+1

Этот синтаксис используется только в ** шаблонах **, а не везде по всему Ларавелю. И эти шаблоны обрабатываются механизмом шаблонов, который анализирует файл в соответствии со своими собственными правилами. Core PHP на самом деле не имеет никакого отношения к этому. Вы спрашиваете, как строятся шаблоны для моделирования или настраиваемые парсеры. И для этого узнайте что-нибудь о парсерах. Это намного менее волшебный, чем вы можете себе представить. – deceze

ответ

2

Чтобы ответить на конкретные вопросы:

Как дополнительный синтаксис будет добавлен в рамках? Это делается с помощью простого PHP или они модифицировали основной PHP-код, чтобы заставить его вести себя по-другому, чтобы он распознавал новый синтаксис?

Да, это делается с использованием blade templating engine. Blade в основном анализирует файлы (*.blade.php) и заменяет его последовательности простым php, который запускается позже. PHP сам по себе является языком шаблонов, так сказать, но создатели, казалось, думали, что это нелегко или выразительно. Если вы хотите узнать больше об этом, ознакомьтесь с документами или просмотрите соответствующие эпизоды Laracasts (L4-Blade Basics, L4-Master-Pages, L5-Blade101). Посмотрите на BladeCompiler, чтобы узнать, как это делается.

людям, создающие основы должны иметь доступ к основному коду языка или они просто работают с тем, что языком предложением и строить свои рамки вокруг этого

Ну, я не уверен, если это применяется к 100% рамок, но в большинстве случаев я бы сказал да. Возможно, однако, что они используют другие технологии, которые напрямую не включены в базовый язык/технологию (например, .NET для C#, предположим, на основе некоторых нет компонентов C#), но я очень сомневаюсь, что манимные (если есть) рамки измените ядро ​​базовой технологии.

BTW. можно создать рамки для технологий, не связанных с открытым исходным кодом, которые. В этих случаях невозможно изменить ядро ​​базовой технологии, так как у вас просто нет доступа к нему.

Рамки можно считать обертками вокруг своей базовой технологии, которые призваны облегчить задачу (часто требуемую) для разработчиков. Но те, что я знаю, не меняют ядро ​​своей базы.

Смежные вопросы