Çoğu insanın duyduğu bir kavram olsa gerek design pattern ler yani tasarım desenleri veya wiki deki tabiri ile tasarım örüntüleri.. Her neyse işte, bu makalede tasarım desenlerini ve basit bir kaç kullanımını ele alacağız..
php
PHP ve Mongo DB ile çalışmak..
StandardDaha önceki iki makalemizde MongoDB kurmanın yollarından ve MongoDB nedir kısaca bahsetmiştim sizlere. Şimdi ise php ile mongo bağlantısını kurup bir kaç küçük örnek ile kafanızdaki sorulara yanıt vermeye çalışacağım..
PHP ve MYSQL ile rastgele kayıt çektirmenin yolları
StandardAslında herkesin ihtiyacı olan ve sürekli kullanılan rastgele kayıt seçme işlemi için bir çoğumuz SQL içersinde ORDER BY RAND() fonksiyonu kullanarak bu işlemi hallediyoruz. . Ancak veritabanındaki kayıtlar büyüdükçe bu şekilde yapmanız işlemi zorlaştıracak, sayfanızı yavaşlatacaktır. Bu işlem için farklı yöntemleri ele alalım..
PHP de türkçe karakterleri ingilizce karakterlere çevirelim
StandardPHP de Türkçe karakterleri ingilizce karakterlere çevirmek için klasik yoldan yazılmış ama işinizi görecek bir fonksiyon...
Türkçe Ülke Listesi
StandardDizi şeklinde ülke listesi arıyorsanız doğru yerdesiniz, hemde ülke isimleri Türkçe..
PHP ve NameSpace Kullanımı
StandardMerhaba arkadaşlar,
Bugün hayatımıza php 5.3 ile birlikte giren bir yeniliği geçte olsa size bahsetmek isterim. NameSpace yani yani İsim Alanları..
Peki neye yarar? PHP’de benzer isimdeki class,constant ve function’ları aynı sayfa/proje içerisinde kullanmamızı sağlar ve daha okunabilir ve anlamlı object mimarileri kurmamızı sağlar. Windows File System olarak kafanızda canlandırabilirsiniz. C:\Onur\test.txt dosyasını düşünelim; aynı dosyadan bir tane daha koymamız durumunda hata verecektir ve üzerine yazacaktır ama C:\Tester\test.txt şeklinde koyarsak aynı sürücüde farklı dizinlerde aynı isimde farklı dosyalar olabilir. İşte buradaki Onur ve Tester dizinlerini namespace gibi canlandırabilirsiniz gözünüzde.
Heman bir örnek ile somutlaştırmak istiyorum;
<?php ######----ONUR CANALP----#### ## NAMESPACES ## ## 25.07.2013 ## ############################# // "Personel" isminde bir namespace tanımlıyorum. namespace Personel; // "Personel" namespace'i içinde "Temizlik" sınıfı oluşturuyorum. Class Temizlik { // "Temizlik" sınıfı içinde "oku" isminde bir fonksiyon oluşturuyorum. public function oku() { return 'Personel namespace içindeki Temizlik çalışanları'; } } Class Teknik { // "Feed" sınıfı içinde "oku" isminde bir fonksiyon oluşturuyorum. public function oku() { return 'Personel namespace içindeki Teknik çalışanlar'; } } // "Yoneticiler" isminde bir namespace tanımlıyorum. namespace Yoneticiler; // "Yoneticiler" namespace'i içinde "Temizlik" sınıfı oluşturuyorum. Class Temizlik { // "Temizlik" sınıfı içinde "oku" isminde bir fonksiyon oluşturuyorum. public function oku() { return 'Yöneticiler namespace içindeki Temizlik çalışanlar'; } } Class Teknik { // "Teknik" sınıfı içinde "oku" isminde bir fonksiyon oluşturuyorum. public function oku() { return 'Yöneticiler namespace içindeki teknik çalışanlar'; } } // "Personel" namespace'i içinde bulunan "Temizlik" Sınıfını tanımlıyorum. $temizlik1 = new \Personel\Temizlik; // "Temizlik" namespace'i içinde bulunan "Temizlik" Sınıfını tanımlıyorum. $temizlik2 = new \Yoneticiler\Temizlik; // "Personel" namespace'i içinde bulunan "Teknik" Sınıfını tanımlıyorum. $teknik1 = new \Personel\Teknik; // "Temizlik" namespace'i içinde bulunan "Teknik" Sınıfını tanımlıyorum. $teknik2 = new \Yoneticiler\Teknik; // Sınıfların içinde bulunan fonksiyonları çağırıyoruz ve sonucu ekrana basıyoruz. echo '<p>' . $temizlik1->oku() . '</p>'; echo '<p>' . $temizlik2->oku() . '</p>'; echo '<p>' . $teknik1->oku() . '</p>'; echo '<p>' . $teknik2->oku() . '</p>'; ?>
PHP 5.5 ve Try / Catch / Finally
StandardPHP 5.5 ve Try / Catch / Finally kullanımı
PHP 5.5 ve Yield Komutu
StandardPHP 5.5 i incelemeye ve detaylandırmaya devam ediyoruz.. PHP 5.5 ile hayatımıza Üreticiler (generators) ve eşyordamlar (coroutines) eklendi.
Şimdi size Generators kısmına değineceğim yani kısaca yield komutu..
Basitçe ve kabaca anlatmak gerekirse bir metodda array’e toplayıp array’i return ettiğiniz işi yapmaktadır. İteratorlar ile kullanımı mantıklı olan bu komut size bellekte büyük kolaylık sağlayacaktır.
Hemen bir örnek ile detaylandırmak isterim:
<?php $data = range(0, 1000000); echo sprintf('%02.2f', (memory_get_usage() / 1048576))." MB of memory used\n"; // output: 137.92 MB of memory used foreach ($data as $key => $val) { //echo "key: ".$key." value: ".$val."\n"; } ?>
PHP interface – Arayüzler
StandardHerkese merhaba,
Bugün size php interface den bahsetmek istiyorum. PHP5 ile birlikte hayatımıza giren bir yenilik olan interface i görsel olarak düşünmeyelim. Aslında Yapı yani modelleme arayüzü olarak düşünebiliriz.
Örnek vermek gerekirse; bir veritabanı altyapısı hazırlıyorsunuz ve mysql,pgsql, oracle gibi birden fazla adaptorünüz var. Bu adaptörlerdeki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Veya Cache yapısı kuracaksınız; APC, memcache gibi cache yapıları kullanacaksınız ve yapılar aynı olacaksa interface kullanabilirsiniz. İnsan için interface tanımlayıp kadın erkek sınıflarını bu interfaceten türeterek cins ikisinde de cinsi iki sınıfada oldurmak istiyorsanı kullanabilirsiniz. Örnek çoğaltılabilir bankalar için sanal pos uygulamasında da kullanabilirsiniz vs.vs.
Özetle Bir projede birden fazla geliştiricinin olması gibi durumlarda standart yapının korunması amacı ile hazırlanır,bizim sınıfa bir standart getirmemizi sağlıyor. Yani o standartların dışına çıkamayacağımız bir sınıf yazmamızı sağlıyor. Ve yapı dışında birşey yapılmak istenirse hata sistem hata verir.
Bu standartları koruma nasıl bir fayda sağlayacak derseniz, göz hatası olabilir, dalgınlık olabilir veya başkasının yazdığınız kodları değiştirmesini istemiyorsunuz, burada interface kullanmanız mantıklı olacaktır.
Büyük projelerde özellikle kullanılır.
Veya diyelim framework lerde DB sınıfı için hazırlanmış olan interface kullanılırki çekirdek kodlar bozulmadan kullanıcılar isterse kendi sınıflarını türetsinler, bu sayede sınıf sizi standartlarına uymaya zorlar.
Lafı daha fazla uzatmadan bir kaç örnek vermek istiyorum sizlere;
ilk örneğimde size mysql, mssql gibi farklı veritabanı yapıları ile bağlantı sağlayabileceğiniz bir örnek vereceğim..
interface DB { public function connect(); public function error(); public function errno(); public static function escape_string($string); public function query($query); public function fetch_array($result); public function fetch_row($result); public function fetch_assoc($result); public function fetch_object($result); public function num_rows($result); public function close(); }
MOODLE Standartları ve Genel Teknikleri
StandardMOODLE ile Yazılım Geliştirmek isteyenlere; MOODLE Standartları ve Genel Teknikleri.. Örnek Yapılmış Çalışmalar ve Modüller..
FTP de bulunan dosya için login kontrolü
StandardFtp de attığınız dosya login kontrolü ile olsun mu istiyorsunuz, o zaman bu yazdığım kod tam sizlik.. Kısa ve öz;
htaccess içine;
RewriteEngine on RewriteRule ^(.+\.pdf)$ index.php?file=$1 [L]