-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplating.html
148 lines (121 loc) · 21.3 KB
/
templating.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome file</title>
<link rel="stylesheet" href="https://stackedit.io/style.css" />
</head>
<body class="stackedit">
<div class="stackedit__left">
<div class="stackedit__toc">
<ul>
<li><a href="#шаблондау">Шаблондау</a>
<ul>
<li><a href="#пайдалар">Пайдалар</a></li>
<li><a href="#тұрау-php-шаблондары">Тұрау PHP Шаблондары</a></li>
<li><a href="#компиляцияланған-шаблондар">Компиляцияланған Шаблондар</a></li>
<li><a href="#қосымша-оқу">Қосымша Оқу</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="stackedit__right">
<div class="stackedit__html">
<h1 id="шаблондау">Шаблондау</h1>
<p>Шаблондар сіздің бағдарлама негізінде болатын бағдарлама мен домендік логикасының көрсету логикасынан айырадылату үшін қолайлы жол ұсынады. Шаблондардың өзі әдетте сіздің бағдарлама HTML-дегі мазмұндарын қамтиды, бірақ басқа форматтар үшін де пайдалануға болады, міне, XML деп. Шаблондарды көбінеулікті <a href="https://phptherightway.com/pages/Design-Patterns.html#model-view-controller">модель-көрсету-контроллер</a> (MVC) бағдарлама жасауының екінші компонентінің бір бөлігі деп аталады.</p>
<h2 id="пайдалар">Пайдалар</h2>
<p>Шаблондарды пайдалануның ең басты қосымшасы - олардың көрсету логикасы мен сіздің бағдарламаныздың қалпына көшуінің ашықтық жасауы. Шаблондардың басқа бір міндеті - қарау мазмұнын көрсету. Олар деректерді іздеу, қалыптастыру немесе басқа қиын іс-шараларды орындау үшін жауапты емесдіктер. Бұл чистеу, оқауы жаттықтыру, байланыс жасау жаттықтыру, дизайнерлердің клиент-тізім кодын (markup) жасаушы кодында жұмыс жасауында өзгерісті жаттықтыру маңызды болады.</p>
<p>Шаблондар өзара көмекшіліктілігін арттырады. Шаблондар өзгеу көрсету кодының ұйымдастырылуын арттырады. Шаблондарды басқа бір “views” (көрсету) папкасында тұрмысты белгіленген файлдарда орналастыру әдісті көмекшілігімен көмек көрсетуін дайындайды. Бұл әдісе ұлғайырсыну, әр түрлі кодты кіші бөлігінде тастайтын көмекші кодты қайта пайдалануын болдырмауын бұландайды. Мысалы, сайттың көзі мен асты шаблондары ретінде белгіленсе, олар әр бет шаблондарынан алдында және артында қосылған боларын көрсетуі мүмкін.</p>
<p>Соңында, сіздің пайдаланатын кітапхананың байланысы бойынша, шаблондар пайдаланушы жасау мазмұнын автоматты тазалау арқылы қауіпсіздікті көтере алады. Кейде кітапханалар темір тау бойынша тексерілген қосылымдар мен функцияларға тексеріп көретін жасаушыларға рұқсат беру көмекшілігін ұсынайды.</p>
<h2 id="тұрау-php-шаблондары">Тұрау PHP Шаблондары</h2>
<p>Тұрау PHP шаблондары әдетте қатерлі PHP кодты қолданатын шаблондарды айырады. PHP шынайы өзі бір шаблон тілі болып табылады, сондықтан олар тізімді көмекші кодтармен біріктіре алады, міне, HTML деп. Бұл PHP дамытушылары үшін елсіз таңдау болып табылады, себебі оларге үстірт кодты көрсету, олардың қолданушыларына тұсыну қолданылатын функцияларды білуді қажет емес, мен екінші компиляциялар кезеңінің өтіп кетуі көмекші.</p>
<p>Әр түрлі жаңа бағдарлама түріндегі белгіленген кездерде <a href="https://platesphp.com/">Plates</a> не <a href="https://github.com/auraphp/Aura.View">Aura.View</a> сияқты кітапханалар оларды аспаптырау, жаңа шаблон функционалдарын ұсынатын өзгертуші көмекшіліктерді пайдаланады. Оларда көзделген функционалдар бойынша көмекшіліктер, мазмұндар мен кеңейтілулер меніңдету функционалдарды ұсыну мүмкін.</p>
<h3 id="тұрау-php-шаблондарының-қарапайым-үлгісі">Тұрау PHP шаблондарының қарапайым үлгісі</h3>
<p><a href="https://platesphp.com/">Plates</a> кітапханасын пайдалану арқылы.</p>
<pre class=" language-php"><code class="prism language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// user_profile.php ?></span></span>
<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">insert</span><span class="token punctuation">(</span><span class="token string">'header'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'title'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Пайдаланушы Профилі'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token delimiter important">?></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Пайдаланушы Профилі<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Сәлеметсіздік, <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">escape</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span>
<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">insert</span><span class="token punctuation">(</span><span class="token string">'footer'</span><span class="token punctuation">)</span> <span class="token delimiter important">?></span></span>
</code></pre>
<h3 id="өріссіз-php-шаблондарын-пайдалану-міндеттеме-көмекшілігін-пайдалану">Өріссіз PHP шаблондарын пайдалану міндеттеме көмекшілігін пайдалану</h3>
<p><a href="https://platesphp.com/">Plates</a> кітапханасын пайдалану арқылы.</p>
<pre class=" language-php"><code class="prism language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// template.php ?></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token variable">$title</span><span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>main</span><span class="token punctuation">></span></span>
<span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">section</span><span class="token punctuation">(</span><span class="token string">'content'</span><span class="token punctuation">)</span><span class="token delimiter important">?></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>main</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span>
</code></pre>
<pre class=" language-php"><code class="prism language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// user_profile.php ?></span></span>
<span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">layout</span><span class="token punctuation">(</span><span class="token string">'template'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'title'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Пайдаланушы Профилі'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token delimiter important">?></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Пайдаланушы Профилі<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Сәлеметсіздік, <span class="token php language-php"><span class="token delimiter important"><?=</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">escape</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span>
</code></pre>
<h2 id="компиляцияланған-шаблондар">Компиляцияланған Шаблондар</h2>
<p>PHP көмекшілігімен келісіп шығарады жаттықтырудан басқа, ол <a href="http://fabien.potencier.org/templating-engines-in-php.html">көмекші тілі ретінде жетімділікке ие болмаған</a>. Олар, міне, <a href="https://twig.symfony.com/">Twig</a>, <a href="https://github.com/box/brainy">Brainy</a>, немесе <a href="https://www.smarty.net/">Smarty</a>* тіркеу көмекшілігімен бұл босағын толтырарып, өзіндік синтаксистік келісімді ұсынады. Автоматты тазалаудан, әдісесі мен қарапайым басқару құрылымдарынан табысқанып, компиляцияланған шабтар жазуы, оқуы жаттығу және қолайлы пайдалануға арналған болады. Компиляцияланған шабтарды бейімделу, оқуы көп оқылу, пайдалануға арналуы мақсатында жасалған. Компиляцияланған шабтарды дайынды тілдерді көмекшілігімен бөлісуге болады, мысалы, <a href="https://mustache.github.io/">Mustache</a> бұл мысал. Бұл шабтарды компиляциялау керек болатын себепті, дайынды кешін пайдалану кезінде, бірақ бұл тура басқаларды салу кезінде ашықтың жаттығуы болады.</p>
<p><em>*Smarty автоматты тазалауды ұсынады, бірақ бұл функционал әдетте өзгертуші болмайды.</em>"</p>
<h3 id="компиляцияланған-шабтардың-жаңауының-орны">Компиляцияланған шабтардың жаңауының орны</h3>
<p><a href="https://twig.symfony.com/">Twig</a> кітапханасын пайдалану арқылы.</p>
<pre class=" language-html"><code class="prism language-html">{% include 'header.html' with {'title': 'Пайдаланушы Профилі'} %}
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Пайдаланушы Профилі<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Сәлеметсіздік, {{ name }}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span>
{% include 'footer.html' %}
</code></pre>
<h3 id="компиляцияланған-шабтардың-ортауын-пайдалану-міндеттемесінің-үлгісі">Компиляцияланған шабтардың ортауын пайдалану міндеттемесінің үлгісі</h3>
<p><a href="https://twig.symfony.com/">Twig</a> кітапханасын пайдалану арқылы.</p>
<pre class=" language-html"><code class="prism language-html">// template.html
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>{% block title %}{% endblock %}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>main</span><span class="token punctuation">></span></span>
{% block content %}{% endblock %}
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>main</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span>
</code></pre>
<pre class=" language-html"><code class="prism language-html">// user_profile.html
{% extends "template.html" %}
{% block title %}Пайдаланушы Профилі{% endblock %}
{% block content %}
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span>Пайдаланушы Профилі<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Сәлеметсіздік, {{ name }}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span>
{% endblock %}
</code></pre>
<h2 id="қосымша-оқу">Қосымша Оқу</h2>
<h3 id="мақалалар-мен-науырыздар">Мақалалар мен Науырыздар</h3>
<ul>
<li><a href="http://fabien.potencier.org/templating-engines-in-php.html">PHP-де Көмекші Тілділері</a></li>
<li><a href="https://code.tutsplus.com/tutorials/an-introduction-to-views-templating-in-codeigniter--net-25648">CodeIgniter-де Пішімдер мен Көмекшілерге Жаттықтыру туралы кітапты оқу</a></li>
<li><a href="https://www.smashingmagazine.com/2011/10/getting-started-with-php-templating/">PHP Шаблонымен Таныстыру</a></li>
<li><a href="https://code.tutsplus.com/tutorials/roll-your-own-templating-system-in-php--net-16596">PHP-де Озын Жасау Шабтарын Тіркеу</a></li>
<li><a href="https://laracasts.com/series/laravel-from-scratch/episodes/7">Мастер Пейджес</a></li>
<li><a href="https://code.tutsplus.com/tutorials/working-with-templates-in-symfony-2--cms-21172">Symfony 2-де Шабтармен Жұмыс Истеу</a></li>
<li><a href="https://github.com/box/brainy/wiki/Writing-Safe-Templates">Тез Шабтарын Жазу</a></li>
</ul>
<h3 id="кітапханалар">Кітапханалар</h3>
<ul>
<li><a href="https://github.com/auraphp/Aura.View">Aura.View</a> <em>(жай)</em></li>
<li><a href="https://laravel.com/docs/blade">Blade</a> <em>(компиляцияланған, фреймворк өзінен таңдаулы)</em></li>
<li><a href="https://github.com/box/brainy">Brainy</a> <em>(компиляцияланған)</em></li>
<li><a href="https://github.com/nette/latte">Latte</a> <em>(компиляцияланған)</em></li>
<li><a href="https://github.com/bobthecow/mustache.php">Mustache</a> <em>(компиляцияланған)</em></li>
<li><a href="https://phptal.org/">PHPTAL</a> <em>(компиляцияланған)</em></li>
<li><a href="https://platesphp.com/">Plates</a> <em>(жай)</em></li>
<li><a href="https://www.smarty.net/">Smarty</a> <em>(компиляцияланған)</em></li>
<li><a href="https://twig.symfony.com/">Twig</a> <em>(компиляцияланған)</em></li>
<li><a href="https://docs.laminas.dev/laminas-view/">laminas-view</a> <em>(жай, фреймворк өзінен таңдаулы)</em></li>
</ul>
</div>
</div>
</body>
</html>