Arkadaşlar bildiğiniz üzere Google Maps ile bir adresin enlem ve boylam değerlerini öğrenmemiz oldukça kolay. Ama bazı durumlarda bu işlemi kullanıcının tarayıcısında yapmak yerine sunucumuzda yapmamız gerekebilir. Bende bu yazımda Php ile bu işlemi sunucu tarafında nasıl yapılacağını anlatmaya çalışacağım.
Öncelikle buraya tıklayarak enlem boylam değerlerini alacağımız çıktıya bir göz atalım.
Adres ile ilgili veriyi çekeceğimiz url’i oluşturalım.
urlencode fonksiyonu ile özel karakterleri url yapısına göre kodlamış olduk. htmlentities fonksiyonu ise urlencode ile kodlanan Türkçe karakterleri Google Maps’in anlamadığı için kullandım.
$data = json_decode(file_get_contents($url));
Json türündeki veriyi çekiyoruz ve değişkenlere dönüştürüyoruz json_decode fonksiyonu ile.
Php her ne kadar OOP mimarsini desteklese de kendisi OOP mimarisi de geliştirilmediği için işimizi kolaylaştıracak bazı metotlardan haberimiz olmuyor. Ek olarak Php’nin aynı işi yapan birden fazla fonksiyonu olunca haliyle birde karmaşa maruz kalıyoruz. Bu yazımda bu faydalı ama gözden kaçırdığımız 5 adet fonksiyonu anlatmaya çalışacağım.
1. wordwrap($metin, $adet, $ayrac): Wordwrap ekrana yazacağımız metinleri belli karakter adedine göre ayraç kullanarak ayırmamızı sağlıyor. Yani 20 karakterden oluşmuş bir cümleyi 2 satırda yazmak istiyorsak eğer wordwrap fonksiyonunu kullanarak bu işlemi kolaylıkla yapabiliriz.
Örnek Kullanımı:
$metin = 'Lorem ipsum sit amet';
echo wordwrap($string, 10, "\n");
/**Ciktisi
* Lorem ipsu
* m sit amet
**/
2.money_format(): Adından da anlaşılacağı üzere yazacağımız para ile ilgili sayıları para birimine göre biçimlendiriyor. Not: Windows’da çalışmıyor.
Birçok nesne tabanlı programlama dilinde uygulanan Zincirleme Yöntemini Php de nasıl yapacağımızı anlatmaya çalışacağım, bu yazımda.
Zincirleme yönetimi bir tanımlama ile birden çok fonksiyonu çalıştırmamızı sağlar. Şimdi aşağıdaki örnek sınıfımıza bir göz atalım. Örnek Sınıfımız
class Kullanici
{
private $ad = null;
private $soyad = null;
private $yas = null;
public function setAd($ad)
{
$this->ad = $ad;
return $this;
}
public function setSoyad($soyad)
{
$this->soyad = $soyad;
return $this;
}
public function setYas($yas)
{
$this->yas = $yas;
return $this;
}
public function getBilgiler()
{
echo 'Ad: ' . $this->ad . ' Soyad: ' . $this->soyad . ' Yas: ' . $this->yas;
}
}
Sınıfımızı zincirleme yöntemi kullanmadan kullanalım.
$kullanici = new Kullanici();
$kullanici->setAd('Can');
$kullanici->setSoyad('Aydoğan');
$kullanici->setYas(21);
$kullanici->getBilgiler();
Gördüğünüz gibi her ayar için yeni bir tanımlama yaptık. Pek pratik bir yöntem değil haliyle. Sınıfımızı zincirleme yöntemi kullanarak kullanalım.
$kullanici = new Kullanici();
$kullanici->setAd('Can')->setSoyad('Aydoğan')->setYas(21)->getBilgiler();
Gördüğünüz gibi tek tanımlama ile hem ayarlarımızı gerçekleştirdik hem çıktımızı aldık. Peki bunu nasıl yaptık? Cevabı çok kolay setAd, setSoyad ve setYas fonksiyonlarında dönen değer olarak $this değişkenini tanımladık. Yani sınıfımızı kendisini dönen değer olarak döndürüyoruz. Dönen değer sınıfın kendisi olunca her fonksiyonun arkasından yeni bir fonksiyon tanımlamamız mümkün oluyor.