PHPackages                             atayahmet/elisa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. atayahmet/elisa

ActiveLibrary[Templating &amp; Views](/categories/templating)

atayahmet/elisa
===============

Elisa is as Template Engine

7162PHP

Since Jul 11Pushed 10y ago4 watchersCompare

[ Source](https://github.com/atayahmet/elisa)[ Packagist](https://packagist.org/packages/atayahmet/elisa)[ RSS](/packages/atayahmet-elisa/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

\#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ı:**

NameTypeDescriptionDefaultstoragestringTemplate dosyalarının önbellekte saklanacağı dizin/cachebooleanÖnbelleklemetrueextstringTemplate dosyalarının uzantıları.htmltagsarrayAçılış ve kapanış tag'leri{ }masterstringAna template dosyasının adımaster\##Kullanım

İlk olarak master template dosyasını görelim.

**master.html**

```

	{ @content }

```

Şimdide master dosyasında **@content** alanına gelecek olan dosyamızı görelim.

**home.html**

```
Home Page
This is home page.
```

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:

```

		Home Page
		This is home page.

```

\##Metod Referansları

NameDescription[setup](#setup)Yapılandırma ayarlarını kaydeder.[storage](#storage)Sadece cache dizinini sınıfa tanımlar.[aliases](#aliases)Fonksiyonlara kısa isimler atamanızı sağlar.[ext](#ext)Sadece dosya uzantılarını sınıfa tanımlar.[tags](#tags)Açılış kapanış tag'lerini değiştirir.[master](#master)Sadece master page dosyasını sınıfa tanımlar.[cache](#cache)Sadece cache durumunu sınıfa tanımlar.[composer](#composer)Template dosyalarını derler. (Render)[view](#view)Bir php dosyasını olduğu gibi bir değişkene aktarır.[show](#show)Bir php dosyasını direkt ekrana basar.[with](#with)Template ve php dosyalarına parametreler göndermenizi sağlar.[each](#each)Parametreleri tüm template ve php dosyalarına gönderir.[clear](#clear)Php cache dosyalarını temizler.[beforeEvent](#beforeEvent)İşlem öncesinde (**composer()**, **view()**, **show()**) olayları (event) çalıştırır.[afterEvent](#afterEvent)İşlem sonrasında (**show()**) olayları (event) çalıştırır.\##Template Yapılandırıcıları

NameDescription[@content](#@content)Sayfamızın gövdesini (body) oluşturan terim.[@extend()](#@extend())Sayfamızı başka template dosyaları ile genişletir.[@section()](#@section())İçerik alanı oluşturur[@append()](#@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](#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

```

	{ @content }

```

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

```
User Profile

	{ @extend('profile.header', ['name' => 'Can']) }

	{ @extend('profile.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:

```

		{ @section('header') }

		{ @end }

		{ @content }

		{ @section('footer') }

		{ @end }

```

login.html:

```
Login page

{ @append('header') }
Login page
{ @end }

{ @append('footer') }

	function hello()
	{
		alert('Hello World!');
	}

{ @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') }
Login page
{ @end }

{ @append('footer') }

	function hello()
	{
		alert('Hello World!');
	}

{ @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) }
	Is logged in!
{ endif }
```

**Örnek 2:**

```
{ if($status === true) }
	Is logged in!
{ else }
	Is not logged in!
{ endif }
```

**Örnek 3:**

```
{ if($status == 1) }
	status: 1
{ elseif($status == 2) }
	status: 2
{ else }
	--
{ endif }
```

\###Döngüler (for, foreach, while)

**for:**

```
{ for($i=1; $i
