PHP üzerinde ufak tefek fonksiyonlarımdan paylaşmaya devam ediyorum. Bir önceki yazıya buradan ve buradan tüm ufak tefeklere ulaşabilirsiniz.
Basit ve zaman kazandıran fonksiyonlara yeni bir yazı ile merhaba.
Birkaç yerde tarih işkemi için date( “Y-m-d H:i:s” ) yazıp duruyorum/uz. Kısaltmak lazım. Ne de olsa 3 5 saniye çok önemli. 🙂 datee adında bir fonksiyon ile birkaç karakter fazla yazmaktan kurtuldum diyebilirim. 🙂
function datee( ) { return date( 'Y-m-d H:i:s' ); }
Projelerimizde bazen filterleme fonksiyonları veya filtreleme için formlar kullanmatayız. Bir projemizde filtreleme için başlangıç ve bitiş zamanı filtresi uygulanmaktadır. Fakat ne olursa olsun her seferinde son kayıttan önceki 1 aylık veriyi ekranda göstermemiz gerekiyor. Yani ekran boş gelmeyecek. 🙂
calc_last_date fonksiyonu ile veritabanından gelen son kaydı alıp 30 gün öncesinin tarihini array / dizi olarak geriye 2 eleman olarak alıyoruz.
function calc_last_date( $last_date, $format = 'Y-m-d', $par = 30 ) { $date[ 'begin_date' ] = date( $format, strtotime( $last_date. ' -'.$par.' day' ) ); $date[ 'end_date' ] = date( $format, strtotime( $last_date. ' +1 day' ) ); return $date; }
Bildiğiniz gibi Textarea, CKEditor gibi nesneler üzerinden veritabanına kayıtlar girerken HTML kodları için BYPASS yöntemleri kullanılıyor. genellikle HTML karakterlerini özel karakterlere çevirip veritabanında saklanmasını sağlarız. Bu yöntem aynı zamanda INJECTION’ların önüne geçmeyi sağlar ( Ne kadar faydalı olacağı tartışılır tabiki. ) .
Aşağıdaki fonksiyonlar sayesinde girilen veriyi eklerken encode_html fonksiyonu ile HMTL’in özel karakterlerinden arındırıp base64 şifreleme yöntemi ile şifreliyorum ki ufak da bir güvenlik olsun. Database tarafında bu veriye ait bir index, sorgu vs. olmadığı için verinin bütünlük olmasını ve bakıldığı anda herşeyin ortada gözükmemesini sağlıyor. Tabi 2 3 milisaniye gecikmeler oluşabilir yoğun sistemler için ama faydalı bir yöntem oldu benim için. Kullanırkende decode_html fonksiyonu ile eski haline geri getirebilirsiniz.
function decode_html( $str ) { return html_entity_decode( base64_decode( $str ) ); } function encode_html( $str ) { return base64_encode( htmlentities( $str ) ); }
2 Adet aynı KEY’ler / İndex’lerden oluşan dizileri sıralamayı sağlayan bir fonksiyon gerekmişti. 1. Diziyi 2. Dizinin KEY değerkerine göre sıralanmasını sağlıyor.
Farklı yöntemler’de mevcut fakat edindiğim tecrübe ve testlerime göre en hızlı şekilde bu yöntem çalışıyor.
function array_sort_array( $arr, $arr2 ) { return array_replace(array_flip( array_keys( $arr2 ) ), $arr); }
Bir projemizde Front-End tarafında oldukça fazla HTML Data attribute ( özelikllerini ) kullanmaktayız. Tablo olarak gelen sayfanın içerisindeki satırdan seçim işlemi yapılırken nerede hangi özelikler gerekiyorsa her seferinde ekleme, çıkarma işlemi yapmaktayız. Tabiki oldukça yorucu ve bazen de yanlışlıkla silinme durumları oluyor.
Veritabanı üzerinden gelen tablo bilgileri için döngüye girerken data attribute’leri için o satıra ait tüm özelliklerini ufak bir fonksiyon yardımıyla data-data_XXXX olacak şekilde geri döndürüp TABLE > TR içerisinde kullanıyoruz. Oldukça rahatlatıcı bir yöntem. Tabi bu şekilde önemli ve kimsenin görmemesi gereken bilgiler mevcut ise öncesinde remove / unset yapmanızı öneririm.
function array_to_html_data( $arr ) { if( !$arr ) return false; $str = ''; foreach( $arr as $key => $value ) { if( !$value || strlen( $value ) > 100 ) continue; $str .= 'data-data_'.$key.'="'.htmlentities( $value ).'" '; } return $str; }
Bir sonraki seride görüşmek üzere. Ufak tefek fonksiyonlar olduklarına bakmayın zaman kazanmak için bazen biraz fazladan zaman harcamak gerekebiliyor. 🙂