Elisa PHP Template Language
Elisa bir template language kütüphanesidir. Template Language nedir sorusuna kısa cevap olarak görünüm (view) dosyalarından php kodlarını arındırma yöntemi diyebiliriz., (*1)
Template dilinde kullanılacak olan php tarafındaki kodların karşılığı olan terimlerin bir kısıtlaması bulunmuyor. Bu tamamen paketi geliştiren developer'ların hayal gücüne bağlı olan bir şey diyebiliriz., (*2)
Ama elbetteki buradaki amaç kullanımı kolay ve hızlıca ortaya bir şeyler çıkarabilmek olmalıdır., (*3)
Kurulum
Elisa composer üzerinden kurulmaktadır. Aşağıdaki json satırını composer dosyanızda require alanına ekleyin., (*4)
"atayahmet/elisa": "1.0.0.*@dev"
sonra komut satırında aşağıdaki komutu çalıştırın:, (*5)
$ composer update
Yapılandırma
use Elisa\Elisa;
$elisa = new Elisa;
$elisa->setup([
'storage' => '/storage/path/',
'cache' => false,
'ext' => '.html',
'master' => 'master'
]);
Parametre detayları:, (*6)
Name |
Type |
Description |
Default |
storage |
string |
Template dosyalarının önbellekte saklanacağı dizin |
/ |
cache |
boolean |
Önbellekleme |
true |
ext |
string |
Template dosyalarının uzantıları |
.html |
tags |
array |
Açılış ve kapanış tag'leri |
{ } |
master |
string |
Ana template dosyasının adı |
master |
Kullanım
İlk olarak master template dosyasını görelim., (*7)
master.html, (*8)
<html>
<head>
</head>
<body>
{ @content }
</body>
</html>
Şimdide master dosyasında @content alanına gelecek olan dosyamızı görelim., (*9)
home.html, (*10)
<h1>Home Page</h1>
<p>This is home page.</p>
Gerekli olan master ve content dosyalarını hazırladıktan sonra bunları tek seferde kullanmayı örneklendirelim., (*11)
$elisa->composer('home', true);
yada, (*12)
$home = $elisa->composer('home');
Bu işlemlerin ardından yapılandırma aşamasında storage alanına tanımladığınız dizine template dosyalarının php dosyası olarak cache'lendiğini görebilirsiniz., (*13)
Composer metodunu çalıştırdıktan sonra sonuç şu şekilde olacaktır:, (*14)
<html>
<head>
</head>
<body>
<h1>Home Page</h1>
<p>This is home page.</p>
</body>
</html>
Metod Referansları
Name |
Description |
setup |
Yapılandırma ayarlarını kaydeder. |
storage |
Sadece cache dizinini sınıfa tanımlar. |
aliases |
Fonksiyonlara kısa isimler atamanızı sağlar. |
ext |
Sadece dosya uzantılarını sınıfa tanımlar. |
tags |
Açılış kapanış tag'lerini değiştirir. |
master |
Sadece master page dosyasını sınıfa tanımlar. |
cache |
Sadece cache durumunu sınıfa tanımlar. |
composer |
Template dosyalarını derler. (Render) |
view |
Bir php dosyasını olduğu gibi bir değişkene aktarır. |
show |
Bir php dosyasını direkt ekrana basar. |
with |
Template ve php dosyalarına parametreler göndermenizi sağlar. |
each |
Parametreleri tüm template ve php dosyalarına gönderir. |
clear |
Php cache dosyalarını temizler. |
beforeEvent |
İşlem öncesinde (composer(), view(), show()) olayları (event) çalıştırır. |
afterEvent |
İşlem sonrasında (show()) olayları (event) çalıştırır. |
Template Yapılandırıcıları
Name |
Description |
@content |
Sayfamızın gövdesini (body) oluşturan terim. |
@extend() |
Sayfamızı başka template dosyaları ile genişletir. |
@section() |
İçerik alanı oluşturur |
@append() |
Oluştururan içerik alanlarına içerikleri iletir. |
Terimlerin Kullanımı
Kontrol terimleri, yazdırma terimleri ve diğer kullanımlar için linke tıklayınız: Terimler, (*15)
Metod Kullanımları
setup
Paket yapılandırma ayarlarında kullanılan metod., (*16)
Örnek:, (*17)
$elisa->setup([
'storage' => '/storage/path/',
'cache' => false,
'ext' => '.html',
'master' => 'master'
]);
storage
setup metodundan bağımsız yapılandırma ayarlarından template dosyalarının hangi dizinde cache'leneceği ayarını tanımlar., (*18)
Örnek:, (*19)
$elisa->storage('/storage/path/');
ext
setup metodundan bağımsız template dosyalarının hangi uzantıda olacağını tanımlar., (*20)
Örnek:, (*21)
$elisa->ext('.html');
setup metodundan bağımsız açılış ve kapanış tag'lerini değiştirir., (*22)
Örnek:, (*23)
$elisa->tags(['{{', '}}']);
master
setup metodundan bağımsız ana template çatı dosyasını tanımlar., (*24)
Örnek:, (*25)
$elisa->master('master_layout');
cache
setup metodundan bağımsız render (derlenen) edilen template dosyalarının önbellekte tutulup tutulmayacağını tanımlar., (*26)
Örnek:, (*27)
$elisa->cache(true); // default true
aliases
Fonksiyon isimlerine kısa isimler yada farklı isimler vererek kendi fonksiyon terminolojinizi oluşturabilirsiniz., (*28)
Örnek:, (*29)
$elisa->aliases(['length' => 'strlen', 'dump' => 'var_dump']);
strlen:, (*30)
{ length('Hello World!') }
var_dump:, (*31)
{ dump('Hello World!') }
composer
Template dosyasını önbellekte yok ise derler (render) ve önbelleğe ekler., (*32)
Örnek:, (*33)
$elisa->composer('home.index');
view
Php dosyasının içeriğini direkt olarak bir değişkene aktarmanızı sağlar.
Örnek:, (*34)
$elisa->view('common.sidebar');
show
Php dosyasının içeriğini direkt olarak ekrana basmanızı sağlar., (*35)
Örnek:, (*36)
$elisa->show('tools.slider');
with
Template ve view dosyalarına parametre göndermenizi sağlar., (*37)
Örnek:, (*38)
$elisa->with(['name' => 'Ahmet']);
$elisa->composer('home.contet', true);
home/content.html:, (*39)
Hello {! $name }
each
Tüm template ve view dosyalarına her zaman gitmesi istediğiniz parametreleri gönderir., (*40)
Örnek:, (*41)
$elisa->each(['name' => 'Ahmet']);
Parametreler aşağıdaki her iki view dosyasına gönderilecektir., (*42)
Örnek:, (*43)
$elisa->view('common.header');
$elisa->view('common.footer');
clear
Önbellekteki derlenmiş template dosyalarını temizler., (*44)
Örnek:, (*45)
$elisa->clear();
beforeEvent
Dosya isimleri ile kayıt edilmiş event'ler dosyalar işleme alınmadan çalıştırılır., (*46)
Not: Göndereceğiniz parametreler çalıştırılan event'e gönderilecektir., (*47)
Örnek:, (*48)
$elisa->beforeEvent(function($params){
// do something...
});
afterEvent
Dosya isimleri ile kayıt edilmiş event'ler dosyalar işleme alındıktan sonra çalıştırılır., (*49)
Not: afterEvent sadece show() metodu ile çalışmaktadır., (*50)
Not: Göndereceğiniz parametreler çalıştırılan event'e gönderilecektir., (*51)
Örnek:, (*52)
$elisa->afterEvent(function($params){
// do something...
});
Yapılandırıcılar
@content
Template içeriğinin gövde kısmını oluşturan bir etikettir. Sadece master template sayfasında kullanılabilir., (*53)
Örnek:, (*54)
master.html, (*55)
<html>
<head>
</head>
<body>
{ @content }
</body>
</html>
Master template ile derlemek istediğiniz gövde (body) template dosyasını şu şekilde kullanabilirisiniz:, (*56)
$elisa->composer('home.body');
@extend()
Template sayfalarını genişletmek için yardımcı olur. Bu metod ile hem template dosyası hemde normal bir php dosyasını dahil edebilirsiniz., (*57)
Ayrıca bu dosyalara parametreler gönderebilirsiniz., (*58)
profile.html, (*59)
User Profile
<header>
{ @extend('profile.header', ['name' => 'Can']) }
</header>
<footer>
{ @extend('profile.footer') }
</footer>
Yukarıda profile.html template dosyasına header ve footer template dosyalarını dahil ettik. Ayrıca header dosyasına bir de parametre gönderdik., (*60)
@section()
Belirteceğiniz section alanlarına başka bir template dosyasından içerik gönderebilirsiniz., (*61)
Örnek:, (*62)
master.html:, (*63)
<html>
<head>
{ @section('header') }
{ @end }
</head>
<body>
{ @content }
{ @section('footer') }
{ @end }
</body>
</html>
login.html:, (*64)
Login page
{ @append('header') }
<title>Login page</title>
{ @end }
{ @append('footer') }
{ @end }
Yukarıda bir master page dosyamız var ve içinde tanımladığımız iki adet section alanları bulunuyor., (*65)
Sonrasında login.html adında bir template dosyası oluşturduk ve append metodlarıyla master page alanındaki section'lara içerikler gönderdik., (*66)
@append()
Belirtilen section alanlarına içerik gönderir., (*67)
Not: Yukarıda detaylı örneği bulabilirsiniz., (*68)
Örnek:, (*69)
{ @append('header') }
<title>Login page</title>
{ @end }
{ @append('footer') }
{ @end }
Terimler
Elisa'da PHP terimleri direkt olarak kullanılabilir. Kendi tagları arasında gerek döngüler gerekse kontrol yapıları basitce kuygulanabilir., (*70)
if Operatörü
Örnek 1:, (*71)
{ if($status === true) }
<h1>Is logged in!</h1>
{ endif }
Örnek 2:, (*72)
{ if($status === true) }
<h1>Is logged in!</h1>
{ else }
<h1>Is not logged in!</h1>
{ endif }
Örnek 3:, (*73)
{ if($status == 1) }
<span>status: 1</span>
{ elseif($status == 2) }
<span>status: 2</span>
{ else }
<span>--</span>
{ endif }
Döngüler (for, foreach, while)
for:, (*74)
{ for($i=1; $i<=5; $i++) }
<h3>{! $i }</h3>
{ endfor }
foreach:, (*75)
{ foreach($users as $user) }
<div>{! $user['name']} {! $user['surname'] }</div>
{ endforeach }
while:, (*76)
{ while($product == $products) }
<div>{! $proudct['name']}</div>
{ endwhile }