Releases: barak-framework/barak
v6.0.0
Index.php
- [Değişti]: Akış BarakApplication.php üzerinden yapılması sağlandı.
Composer
- Değişiklik yok.
BarakApplication +
- [Açıklama]: Ana Çekirdek ve Modüllerin yüklenip ilgili yönlendiricinin sevk edildiği sınıf oluşturuldu.
kernel
vemodules
olmak üzere iki kütüphane yükleme ayarlandı.modules
olarak:cacher
,mailer
,model
,http
ekleme olanağı eklendi.
lib/
kernel/
Application -+
-
[Değişti]: Tüm sınıf BarakApplication olarak yeni sınıf ismiyle taşındı.
-
[Eklendi]: Yeni
config/application.php
çekirdek yapılandırma dosyasını okuyan sınıf oluşturuldu.
Çekirdek genel ayarları olarakdebug
,timezone
,locale
,logger
set etme imkanı ve modül ayarları olarakcacher
,mailer
,model
,http
ekleme olanağı eklendi.
Application::config(function() {
set("timezone", "Europe/Istanbul");
set("debug", true);
set("locale", "tr");
set("logger", [
"file" => "production", // dosya ismi
"level" => "info", // en kapsamlı yaz
"driver" => "weekly", // haftalık
"rotate" => 4, // 4 yedek
"size" => 15728640 // 15 MB
]);
modules(["cacher", "mailer", "model", "http"]);
});
ApplicationAlias
- [Değişti]: ApplicationRoutes kısa yol fonksiyonları BarakApplication'a taşındı.
ApplicationCache -
- [Açıklama]: Sınıf kaldırıldı. ApplicationCache → ApplicationCacher olarak taşındı.
ApplicationConfig
-
[Değişti]: Application için
config/application.ini
dosyası kaldırıldı,config/application.php
dosyası eklendi. -
[Kaldırıldı]: ApplicationLogger için kullanılan
config/logger.ini
yapılandırma dosyası kaldırıldı,config/application.php
dosyası içerisinde yapılandırılacak şekilde taşındı. -
[Eklendi]: ApplicationCacher için
config/cacher.ini
dosyası içerisindedatas
,clear
saniye cinsinden girilen değerlere göre anahtara göre ön bellekleme ve genel ön bellek temizliği imkanı sağlandı.
ApplicationController
ApplicationDebug
- [Değişti]: Hata gösterme durumu varsayılan olarak
true
şeklinde değişti.
ApplicationDispatcher
- [Eklendi]: Controller isminin tam adı loglanması sağlandı. (Ör.:
Processing by WritepageController#show as HTML gibi
)
ApplicationHelper
- Değişiklik yok.
ApplicationI18n
- [Eklendi]: Tembel anahtar özelliği eklendi. Her template dosyasının bir title vermek isterseniz ve buna kolayca erişmek istenirse kullanılır.
Ör.:
<title><?= t(".title"); ?></title>
- [Eklendi]: Anahtara parametre gönderme özelliği eklendi.
Ör.:
<title><?= t(".title", ["writer_name" => $writer_name]); ?></title>
ApplicationLogger
- [Değişti]:
driver
,file
,rotate
,level
,size
anahtarları ile logger çalışma şekli değişti.
ApplicationRequest
- [Değişti]: Kullanıcı istek zamanına
GMT
eklenerek değişti.
ApplicationResponse
- Değişiklik yok.
ApplicationRoute
- Değişiklik yok.
ApplicationRoutes
- [Değişti]: Normalde
head
,options
gibi (get
,post
harici) method isteklerinde expection yönlendirmesi sonucupublic/500.php
sayfası gösteriliyordu. Buna uygun bir http status buluna kadar diğer frameworklerde kullanılan genel davranış olarakpublic/404.php
sayfasına yönlendirme yapılarak değişti.
ApplicationView
-
[Değişti]: Görünüm dosyasına(
Template
) gönderilen değişkenlere sadece o görünüm dosyasında ve alt görünüm dosyalarında erişim sağlanıyordu. Şimdi görünüm yerleştirme dosyasında da(Layout
) bu değişkenlere erişme imkanı sağlanacak şekilde değişti. -
[Eklendi]: Ana render için log kaydı oluşturulması eklendi.(Ör.:
Rendering home/index.php within layouts/home.php gibi
)
modules/
cacher/
ApplicationCacher +
-
[Açıklama]: Sınıf oluşturuldu. ApplicationCache → ApplicationCacher olarak taşındı.
-
[Değişti]:
reset()
fonksiyonuclear()
olarak değişti. -
[Değişti]: Değişkenler sadece ismine göre kaydedilecek şekilde değişti. (Değişken kaydederken her
istek_url
ye özgü ön ek eklenmesi silindi. Bir değişken her yerden erişilebilir olduğu için tekil(unique) yapmak istenirse Helper sınıfı oluşturulupfonksiyon_ismi + değiken_değeri
kullanılabilir.)
http/
ApplicationHttp
- Değişiklik yok.
mailer/
ApplicationMailer
-
[Onarıldı]: Web sunucular sistemi çalıştırmaya devam etsede fazla olan "/" path kaldırıldı, bug onarıldı.
-
[Eklendi]: Mail render için log kaydı eklendi. (Ör.:
Rendering mail/notice/home.php within layouts/mailer.php gibi
)
model/
ApplicationDatabase
- Değişiklik yok.
ApplicationModel
- Değişiklik yok.
ApplicationQuery
- Değişiklik yok.
ApplicationSql
- Değişiklik yok.
v5.0.0
Index.php
- Değişiklik yok.
Composer +
Bağımlılık yöneticisi olarak Composer paket yöneticisi eklendi.
lib/
Application
- [Eklendi]: Akış
ApplicationDispatcher::dispatch()
üzerinden sağlanması için eklendi.
ApplicationAlias
- [Kaldırıldı]: ApplicationUtil kısa yol fonksiyonları kaldırıldı.
ApplicationCache
- Değişiklik yok.
ApplicationConfig
- [Eklendi]: ApplicationLogger için
config/logger.ini
dosyasında yapılandırma dosyasını okuması için fonksiyon eklendi.
ApplicationController
-
[Değişti]:
render
veredirect
üzerimdekioption
artık/
ile başlamayacak şekilde ayarlandı. -
[Eklendi]:
send_data
şeklinde dosya yollama fonksiyonu eklendi. -
[Eklendi]:
render
vesend_data
için veri gönderim türücontent_type
ayarlandı. -
[Eklendi]:
scope
özelliği ile path kullananlar için süper(üst kapsayan) sınıf oluşturma özelliği eklendi.
ApplicationDatabase
- [Eklendi]: Veritabanı modelleri
config/database.ini
içerisindenadapter
anahtarı ile seçilerek bağlantı yapma imkanı eklendi. Destek verilen veritabanı modelleri PDO'nun destekledikleridir.
ApplicationDebug
-
[Eklendi]: Hata izi sürmek için trace özelliği eklendi.
-
[Onarıldı]:
ApplicationDebug::exception(Exception $exception)
verilen hatayı üretenException
ön tanımlanması kaldırıldı, çünkü php artıkThroriawble
şeklinde veri de yollayabiliyor.
ApplicationDispatcher +
- [Açıklama]: Sınıf oluşturuldu. Akış işlemlerinin gerçekleştiği ve loglandığı sınıf oluşturuldu.
ApplicationHelper
- Değişiklik yok.
ApplicationHttp +
- [Açıklama]: Sınıf oluşturuldu.
get
,post
gibi curl işlemlerini sağlayan ve loglamada gösteren sınıf oluşturuldu.
ApplicationI18n
- Değişiklik yok.
ApplicationLogger
- [Onarıldı]: Ölümcül hatalarda(
ApplicationDebug::shutdown
) log yazmıyordu, full path verilerekopen_basedir
engellemesi aşıldı.
ApplicationMailer
- [Değişti]: İstek için mail işlemlerinde sadece 1 mail bağlantısı yapması sağlandı.
ApplicationModel
- [Değişti]: ApplicationModel(Bir kayıt üzerinde işlem) ile ApplicationQuery(Sorgulama dilleri) ayrılarak işler kolaylaştırıldı ve kullanıcı deneyim güvenliği arttırılmış oldu.
ApplicationMySQL -
- [Açıklama]: Sınıf kaldırıldı. ApplicationMySQL → ApplicationSql olarak taşındı.
ApplicationQuery +
- [Açıklama]: ApplicationModel üzerinde
::load
üzeri yapılacak Query işlemlerinin yapan sınıf oluşturuldu.
ApplicationRequest +
- [Açıklama]: Sınıf oluşturuldu. İstek yapan istemcinin isteklerini, bilgilerini tutan sınıf oluşturuldu.
İstekler:REQUEST_URI
,REQUEST_METHOD
, Bilgiler:Ip
,Datetime
.
ApplicationResponse +
- [Açıklama]: Sınıf oluşturuldu. Görüntüyü(
body
) sevk ederken ek olarakheader
,status_code
,content_type
özelliği ile servis eden sınıf oluşturuldu.
Durum Kodları(status_code
):0:Ek
,200:Tamam
,302:Yönlendirme
,404:Hata
,500:Ayıklama
desteklemektedir.
İçerik Tipleri(content_type
): Her içerik tipi destekleniyor. Varsayılantext/html
.
Başlık(header
): Her başlık destekleniyor. Varsayılan güvenli başlıklar yüklü geliyor.public/404.html
,public/500.html
sayfalarının bu sınıfın değişkeninde tutulması sağlandı.
ApplicationRoute
- Ufak değişiklikler yapıldı.
ApplicationRoutes
- Ufak değişiklikler yapıldı.
ApplicationSql +
- [Açıklama]: Sınıf oluşturuldu. ApplicationMySQL → ApplicationSql olarak taşındı.
ApplicationUtil -
- [Açıklama]: Sınıf kaldırıldı.
ApplicationView
- [Kaldırıldı]:
public/404.html
,public/500.html
sayfalarının değişkende tutulması kaldırıldı.
v4.0.0
Index.php
- Değişiklik yok
lib/
Application
- Değişiklik yok
ApplicationAlias
- [Değişti]: ApplicationRoute sınıfından gösterilen link yolları, ApplicationRoutes olarak değişti.
ApplicationCache
- [Değişti]: Değişkenlerin için varsayılan süresi
~= 600000
(yaklaşık 1 hafta) olarak değişti.
ApplicationConfig
- Değişiklik yok
ApplicationController
- [Değişti]: Ufak değişiklikler yapıldı.
ApplicationDatabase
- Değişiklik yok
ApplicationDebug
-
[Eklendi]: Hata gösterme durumunun varsayılan olarak
false
şeklinde eklendi. -
[Değişti]: Hataya ait satırların HTML taglarından kurtularak loglanması sağlandı.
ApplicationHelper
- [Eklendi]: Tüm Helper'i eklemek için
all
anahtar özelliği eklendi.
ApplicationI18n
- Değişiklik yok
ApplicationLogger
- [Değişti]: Log yazma formatı değişti.
ApplicationMailer
-
[Eklendi]: Mail gönderim hataların loglanması eklendi.
-
[Değişti]:
mailer
fonksiyonun parametre alma yapısının değişti.
mail (["to" => [$email1 => $name1, ...], "subject" => $subject])
ApplicationModel
-
[Değişti]:
first
,last
,count
hataları önlenecek tedbir alınması için değişti. -
[Değişti]:
count
: yapısı değişti.
$user_count = User::load()
->group("first_name") // or ->group("user.first_name")
->count();
// [4 => ["First_name" => "Gökhan"], 2 => ["first_name" => "Gökçe"]]
- [Değişti]:
joins
: yapısı değişti.
İlk tablo sütunları hariç join işleminde select çakışmasını önlemek için diğer tablo alan bilgileri $TABLE_$field
şeklinde gelmektedir. (Ör.: address.phone as address_phone
gibi)
// user ["id", "first_name", "phone"]
// address ["id", "user_id", "phone"]
User:load()->joins("address")->get_all();
/*
SELECT user.id, user.first_name, user.phone,
address.id as address_id,
address.user_id as address_user_id,
address.phone as address_phone
FROM user
INNER JOIN address ON address.user_id=user.id;
*/
- [Değişti]:
limit
: varsayılan değer1
olacak şekilde ve0
ın altında bir değerde hata verecek şekilde değişti.
ApplicationMySQL
- [Kaldırıldı]: Loglamada yazılan
debug_backtrace
fonksiyonunun hataları, kaldırıldı.
ApplicationRoute
- [Değişti]:
scope
,resource
,resources
,root
,_get
,_post
fonksiyonlarının ApplicationRoute sınıfından ApplicationRoutes sınıfına taşındı.
ApplicationRoutes
-
[Değişti]:
scope
,resource
,resources
,root
,_get
,_post
fonksiyonlarının ApplicationRoute sınıfından ApplicationRoutes sınıfına taşındı. -
[Eklendi]:
get
,post
methodları harici gelen istekleri hata kaydı olarak kaydettirildi. -
[Değişti]:
draw
fonksiyonuna tanımlamanan rotaları parametre yerine toplu olarak için fonksiyon şeklinde gönderecek şekilde değiştirildi. Ayrıca tekrarlı birdraw
fonksiyonu çağrıldığında işleme alması engellendi.
ApplicationRoutes::draw(function() {
// functions here
});
- [Eklendi]: Kapsam şeklinde birden çok parametreyi özyinemeli şekilde almasını sağlayan
scope
fonksiyonun eklendi.
scope("/admin", function() {
scope("/producst",function() {
// functions here
});
});
-
[Eklendi]: İstek gelen
method
,rule
ve isteği yapanınip
bilgisininms
olarak loglanması eklendi. -
[Eklendi]: Her çalışan controller dosyası için
ms
cinsinden loglanması eklendi.
ApplicationUtil
- Değişiklik yok
ApplicationView
-
[Eklendi]:
public/404.html
,public/500.html
sayfalarının değişkende tutulması eklendi. -
[Eklendi]: Her render edilen template dosyasının
ms
cinsinden loglanması eklendi.
v3.0.0
Index.php
- [Değişti]: Akış Application.php üzerinden yapılması sağlandı.
lib/
Application +
-
[Eklendi]: Sınıf oluşturuldu. Index.php içeriği (sistem akışı) buraya taşındı.
-
[Eklendi]: ApplicationDebug ilklendirilmesi eklendi.
// Fatal error handling
register_shutdown_function('ApplicationDebug::shutdown');
// Exception handling
set_exception_handler('ApplicationDebug::exception');
// Error handling
set_error_handler('ApplicationDebug::error');
- [Eklendi]: ApplicationDatabase bağlantı kapatması eklendi.
// Database : close
ApplicationDatabase::close();
ApplicationAlias +
- [Açıklama]: Bazı fonksiyonlara kısa takma isimle erişmek için sınıf eklendi.
"ApplicationI18n::translate();" -> "t();" gibi
ApplicationCache +
- [Açıklama]: Her istek_url'ye özgü değişkenlerin veritabanı olmadan belirli süre dosyada depolanması için yeni sınıf eklendi.
ApplicationConfig
-
[Eklendi]: ApplicationCache için
config/application.ini
içerisindecacheexpiration = 604800
şeklinde anahtar eklendi. -
[Eklendi]: ApplicationMailer için
config/mailer.ini
dosyasında yapılandırma dosyasını okuması için fonksiyon eklendi. -
[Eklendi]: ApplicationDebug için
config/application.ini
içerisinde hataların gösterilmesi (public/500.html) veya gösterilmemesi içindebug = true
şeklinde anahtar eklendi. -
[Eklendi]: ApplicationLogger için
config/application.ini
içerisinde günlük log dosyaların boyutunun girilmesi için
logsize = 5242880
şeklinde anahtar eklendi.
ApplicationController
- [Değişti]: Ufak değiklikler yapıldı.
ApplicationDatabase
-
[Eklendi]: İstek sonrası veritabanı bağlantısını kapatma fonksiyonu eklendi.
-
[Değişti]: İstek için veritabanı işlemlerinde (static değişken ile) sadece bir bağlantı yapması sağlandı.
ApplicationDebug +
- [Açıklama]: Tüm hataların + istisna + ölümcül hataların bir yönetildiği şeklinde yeni sınıf eklendi.
ApplicationException -
- [Açıklama]: Sınıf kaldırıldı.
ApplicationHelper -+
- [Değişti]: Tüm sınıf ApplicationAlias olarak yeni sınıf ismiyle taşındı. ApplicationController içerisinde kullanmak üzere
app/helpers/*
içindeki helper sınıflarını ekleme için değiştirildi.
ApplicationI18n
- [Değişti]: Sadece SESSION olarak dil değişkenlerinin depolanması sağlandı.
ApplicationLogger +
- [Açıklama]: Hataların her daim günlük olarak
tmp/log/*
altına kaydı sağlayan sınıf eklendi.
ApplicationMailer +
- [Açıklama]: ApplicationMailer sınıfı ApplicationController sınıfı gibi before, after özelliği olan yeni sınıf eklendi.
ApplicationModel
-
[Eklendi]: Tanımlı olmayan fonksiyonlara erişmeye çalıştığında hata yönlendirilmesi yapıldı.
-
[Eklendi]:
update_all
,get
,get_all
fonksiyonları eklendi. -
[Kaldırıldı]:
primary_keyname
,tablename
,take
, fonksiyonları kaldırıldı.
ApplicationMySQL +
-
[Açıklama]: Sınıf oluşturuldu. ApplicationSql → ApplicationMySQL olarak taşındı.
-
[Değişti]:
read
tek kayıt dönecek şekilde değiştirildi. -
[Eklendi]:
read_all
şeklinde çok kayıt dönecek fonksiyon eklendi.
ApplicationRoute
- [Değişti]: Ufak değşiklikler yapıldı.
ApplicationRoutes
- [Değişti]: Tanımlanmayan route'ları
public/404.html
sayfasından çekip gösterecek şekilde ayarlandı.
ApplicationSql -
- [Açıklama]: Sınıf kaldırıldı. ApplicationSql → ApplicationMySQL olarak taşındı.
ApplicationView
- [Değişti]:
HTML
yadaPHP
dosyası içerisinde çağrılanrender
methodu içeriği ekrana basmak yerine, döndürecek şekilde ayarlandı.<?php render(); ?>
yerine<?= render(); ?>
şeklinde kullanılacak şekilde ayarlandı.
ApplicationUtil +
- [Açıklama]:
url_encode
,url_decode
,html_escape
fonksiyonları barındıran yeni sınıf eklendi.