atayahmet / elisa
Elisa is as Template Engine
Requires
- php: >=5.3
This package is auto-updated.
Last update: 2024-11-17 09:34:59 UTC
README
#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.
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.
Ama elbetteki buradaki amaç kullanımı kolay ve hızlıca ortaya bir şeyler çıkarabilmek olmalıdır.
##Kurulum Elisa composer üzerinden kurulmaktadır. Aşağıdaki json satırını composer dosyanızda require alanına ekleyin.
"atayahmet/elisa": "1.0.0.*@dev"
sonra komut satırında aşağıdaki komutu çalıştırın:
$ composer update
##Yapılandırma
use Elisa\Elisa; $elisa = new Elisa; $elisa->setup([ 'storage' => '/storage/path/', 'cache' => false, 'ext' => '.html', 'master' => 'master' ]);
Parametre detayları:
##Kullanım
İlk olarak master template dosyasını görelim.
master.html
<html> <head> </head> <body> { @content } </body> </html>
Şimdide master dosyasında @content alanına gelecek olan dosyamızı görelim.
home.html
<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.
$elisa->composer('home', true);
yada
$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.
Composer metodunu çalıştırdıktan sonra sonuç şu şekilde olacaktır:
<html> <head> </head> <body> <h1>Home Page</h1> <p>This is home page.</p> </body> </html>
##Metod Referansları
##Template Yapılandırıcıları
##Terimlerin Kullanımı
Kontrol terimleri, yazdırma terimleri ve diğer kullanımlar için linke tıklayınız: Terimler
#Metod Kullanımları
###setup Paket yapılandırma ayarlarında kullanılan metod.
Örnek:
$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.
Örnek:
$elisa->storage('/storage/path/');
###ext
setup metodundan bağımsız template dosyalarının hangi uzantıda olacağını tanımlar.
Örnek:
$elisa->ext('.html');
###tags
setup metodundan bağımsız açılış ve kapanış tag'lerini değiştirir.
Örnek:
$elisa->tags(['{{', '}}']);
###master
setup metodundan bağımsız ana template çatı dosyasını tanımlar.
Örnek:
$elisa->master('master_layout');
###cache
setup metodundan bağımsız render (derlenen) edilen template dosyalarının önbellekte tutulup tutulmayacağını tanımlar.
Örnek:
$elisa->cache(true); // default true
###aliases
Fonksiyon isimlerine kısa isimler yada farklı isimler vererek kendi fonksiyon terminolojinizi oluşturabilirsiniz.
Örnek:
$elisa->aliases(['length' => 'strlen', 'dump' => 'var_dump']);
strlen:
{ length('Hello World!') }
var_dump:
{ dump('Hello World!') }
###composer
Template dosyasını önbellekte yok ise derler (render) ve önbelleğe ekler.
Örnek:
$elisa->composer('home.index');
###view
Php dosyasının içeriğini direkt olarak bir değişkene aktarmanızı sağlar. Örnek:
$elisa->view('common.sidebar');
###show
Php dosyasının içeriğini direkt olarak ekrana basmanızı sağlar.
Örnek:
$elisa->show('tools.slider');
###with
Template ve view dosyalarına parametre göndermenizi sağlar.
Örnek:
$elisa->with(['name' => 'Ahmet']); $elisa->composer('home.contet', true);
home/content.html:
Hello {! $name }
###each
Tüm template ve view dosyalarına her zaman gitmesi istediğiniz parametreleri gönderir.
Örnek:
$elisa->each(['name' => 'Ahmet']);
Parametreler aşağıdaki her iki view dosyasına gönderilecektir.
Örnek:
$elisa->view('common.header'); $elisa->view('common.footer');
###clear
Önbellekteki derlenmiş template dosyalarını temizler.
Örnek:
$elisa->clear();
###beforeEvent
Dosya isimleri ile kayıt edilmiş event'ler dosyalar işleme alınmadan çalıştırılır.
Not: Göndereceğiniz parametreler çalıştırılan event'e gönderilecektir.
Örnek:
$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.
Not: afterEvent sadece show() metodu ile çalışmaktadır.
Not: Göndereceğiniz parametreler çalıştırılan event'e gönderilecektir.
Örnek:
$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.
Örnek:
master.html
<html> <head> </head> <body> { @content } </body> </html>
Master template ile derlemek istediğiniz gövde (body) template dosyasını şu şekilde kullanabilirisiniz:
$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.
Ayrıca bu dosyalara parametreler gönderebilirsiniz.
profile.html
<h1>User Profile</h1> <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.
###@section()
Belirteceğiniz section alanlarına başka bir template dosyasından içerik gönderebilirsiniz.
Örnek:
master.html:
<html> <head> { @section('header') } { @end } </head> <body> { @content } { @section('footer') } { @end } </body> </html>
login.html:
<h1>Login page</h1> { @append('header') } <title>Login page</title> { @end } { @append('footer') } <script type="text/javascript"> function hello() { alert('Hello World!'); } </script> { @end }
Yukarıda bir master page dosyamız var ve içinde tanımladığımız iki adet section alanları bulunuyor.
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.
###@append()
Belirtilen section alanlarına içerik gönderir.
Not: Yukarıda detaylı örneği bulabilirsiniz.
Örnek:
{ @append('header') } <title>Login page</title> { @end } { @append('footer') } <script type="text/javascript"> function hello() { alert('Hello World!'); } </script> { @end }
#Terimler
Elisa'da PHP terimleri direkt olarak kullanılabilir. Kendi tagları arasında gerek döngüler gerekse kontrol yapıları basitce kuygulanabilir.
###if Operatörü
Örnek 1:
{ if($status === true) } <h1>Is logged in!</h1> { endif }
Örnek 2:
{ if($status === true) } <h1>Is logged in!</h1> { else } <h1>Is not logged in!</h1> { endif }
Örnek 3:
{ 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:
{ for($i=1; $i<=5; $i++) } <h3>{! $i }</h3> { endfor }
foreach:
{ foreach($users as $user) } <div>{! $user['name']} {! $user['surname'] }</div> { endforeach }
while:
{ while($product == $products) } <div>{! $proudct['name']}</div> { endwhile }