Yazılım

PHP ile Boş Obje

Tamer tarafından, 05 03 2013 22:40:00 tarihinde yayınlandı.

class bosObje {
  public function __construct() {}
  public function __destruct() {}
  public function __set($name, $value) {}
  public function __get($name) { return null; }
  public function __isset($name) { return false; }
  public function __unset($name) {}
  public function __call($name, $args) {}
  public function __toString() { return ''; }
  public function __invoke() {}
  public function __clone() {}
  public static function __callStatic($name, $args) {}
}
Etiketler : PHP, Yazılım

PHP array key 2147483647'den sonra ?

Tamer tarafından, 05 03 2013 07:20:00 tarihinde yayınlandı.

PHP ile dizi fonksiyonları ile çalışmak en sevdiğim uğraşlardan biridir. İç içe geçmiş ağaç yapıları, uzun soluklu döngüler ve değer tutucular... Hemen  hemen her şeyde başı diziler çeker. Bugünkü yazımda sizi diziler ile ilgili farklı bir konuya götürmek istiyorum.


$dizi[20] = "şapka";
$dizi[] = "kravat"; // peki anahtarı ne olarak tanımladı ? 0 mı ?

print_r($dizi);
/*
Çıktısı
Array ( [20] => şapka [21] => kravat )
*/

Yukarda tanımladığım ilk $dizi değişkeninin dizisine anahtarına(key) 20 tanımladım. daha sonrada boş anahtarına(key) tanımladım.  Hemen altında boş anahtar(key) tanımladığım değeri "kravat" olan $dizi değişkenin anahtar numarası 21 oldu. burada anlaşılan daha önce tanımlanan varsa onun üzerine +1 ekliyor.

not: Eğer char olarak tanımlasaydım değeri "kravat" olan dizinin anahtarı 0 olacaktı.


$dizi[2147483647] = "şapka";
$dizi[] = "kravat"; // peki anahtar değeri ne olarak tanımladı ? 2147483648 mi ?

print_r($dizi);
/*
Çıktısı
Error: [2] Cannot add element to the array as the next element is already occupied
Array ( [2147483647] => şapka )
*/

Açıkcası ilk seferde yukardaki hatayı vermesinin sebebini anlamamıştım. Anlaşılan dizi anahtarları "2147483647" sayısına kadar tanımlanabiliyordu. Aniden aklıma bu bir şifre olabilir gibi komplo teorileri geldi ve şunu denedim :



print(date("d.m.Y H:i:s",2147483647));
/*
Çıktısı
18.01.2038 22:14:07
*/

Cevap ürkütücü :)
Evet 2038 yılı bu Ankara Belediye Başkanı'nın 2038'de Ankara'nın ulaşım problerini çözeceği vaade mi işaret ediyordu ? Tabiki başka birşey peki ney ?

Cevabı internette ararken şuna rasladım...

2038 yılı problemi,
2038 yılında bazı POSIX zaman gösterimini kullanan 32-bit sistemlerin çökmesine yol açacak bir yazılım hatasıdır.

Hata, sistem zamanını 1 Ocak 1970 tarihinden beri saniye bazında hesaplayan ve 32-bitlik UNIX ve türevi sistemlerde 19 Ocak 2038 Salı günü saat 03:14:07'de sayacın başa dönmesiyle sistem tarihinin 13 Aralık 1901 20:45:52'yi göstermesiyle ortaya çıkacaktır. Son yıllarda bazı çözüm yöntemleri geliştirilse de hiçbiri basit ve uygulanabilir olamamıştır. Ancak 64 bit'li sistemlere geçişin 2038 yılına kadar tamamlanacağı ve böylece hatanın kendiliğinden ortadan kalkacağı düşünülmektedir.
wikipedia

Etiketler : Yazılım, PHP, Genel

PHP ile Trait'ler (traits)

Tamer tarafından, 05 01 2013 03:21:00 tarihinde yayınlandı.

Uzun bir aradan sonra yeniden merhaba, Bu paylaşımında sizlere PHP 5.4.0 versiyonu ile birlikten gelen "traits" özelliğinden bahsedeceğim.

Trait ?

"trait" bir sınıf gibi oluşturuluyor fakat bir sınıf gibi kullanamıyorsunuz. Kullanım yeri için kafamızda birşeylerin belirmesi için bir örnek verecek olsaydım; ortak fonksiyon toplama alanı diyebilirdim. Tabiki bu basit bir anlatış olacak.Tabi örnek kullanım şeklini görmeden anlaşılması biraz karışık olabilir.


NORMAL KULLANIM ŞEKLİ


trait tavuklar {
        public function kirmizi() {
	        echo "kirmizi tavuk!";
	    }
	}
	 
	trait horozlar {
	    public function siyah() {
	        echo "siyah horoz!";
	    }
	}
	 
	class kumes {
	    use tavuklar, horozlar;
	}
	 
	$ornek = new kumes;
	$ornek->kirmizi(); // kirmizi tavuk!
	$ornek->siyah(); // siyah horoz!


ELEMELİ KULLANIM ŞEKLİ

 
trait tavuklar { 
	    
  public function kirmizi() { 	        
    echo "kirmizi tavuk!"; 	    
  } 
            
  public function siyah(){                
    echo "siyah tavuk!";             
  } 	
}
 	  	
trait horozlar {  
           
  public function kirmizi() {
    echo "kirmizi horoz!";
  } 	  
  
  public function siyah() {
    echo "siyah horoz!";
  } 	
} 	
  	
class kumes { 	    
  use tavuklar, horozlar{             
    horozlar::kirmizi insteadof tavuklar;             
    horozlar::siyah insteadof tavuklar;             
    tavuklar::kirmizi as kirmizitavuk;            
  } 	
} 	  	

$ornek = new kumes; 	

$ornek->kirmizi();  // kirmizi horoz! 	
$ornek->siyah();    // siyah horoz!         
$ornek->kirmizitavuk(); // kirmizi tavuk! 
 

Yukardaki örnekte mukerrer fonksiyon isimlerinin kullanılabilir haklarını "use" kısmında belirtiyoruz. ulaşamadımız tavuklar trait'inin kirmizi tavuklarına ulaşmak içinde "tavuklar::kirmizi as kirmizitavuk" örnekteki kombinasyonu sağlıyoruz.

STATIC KULLANIM ŞEKLİ


trait statikOrnek {
    public static function foo() {
        return 'Merhaba Dünya!';
    }
}

class ornek {
    use statikOrnek;
}

ornek::foo(); // Merhaba Dünya

Etiketler : Yazılım, PHP, Genel

MAMP ile MongoDB Başlarken

Tamer tarafından, 02 13 2013 08:03:00 tarihinde yayınlandı.

Başlarken diyorum çünkü MAC'inize MongoDB kurmak çok  kolay,

Öncelikle Terminal'i açıp HOMEBREW(Paket yöneticisi) kuruyoruz.

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

HOMEBREW kurulduktan sonra

brew update

bunu yenile gibi düşünebilirsiniz.

brew install mongo

Kuruyorsunuz...

brew update

Güncelliyorsunuz ayrıca;

brew list

derseniz kurulduğunu görebilirsiniz. bu kadar şimdi test ediyoruz

mongod

ekran çıktısı olarak aşağıdaki yazı gelecektir. log dosyasını konsol ile bakabilirsiniz.
all output going to: /usr/local/var/log/mongodb/mongo.log

Terminal'de test etmek veya kullanmak için

mongo

yazmanız yeterli..

Geriye  PHP'ye entegre etmek kaldı.

Aşağıdaki adresten php sürümünüze uygun eklentiyi indirin.

https://github.com/mongodb/mongo-php-driver/downloads

inen ".so" uzantılı dosyayı

MAMP Uygulama klasörünün içinde bulunan ( genelde /Applications/MAMP/ )

/bin/php/(kullandığınız PHP sürümü)/lib/php/extensions/no-debug-non-zts... klasörünün içine taşıyoruz.

sonra /bin/php/(kullandığınız PHP sürümü)/conf/php.ini dosyasını herhangi bir yazı editör ile açıp

extension=mongo.so

satırını ekliyoruz, son olarak MAMP'ı yeniden çalıştırıyoruz.

<?php phpinfo(); ?>
phpinfo'ya bakıp kontrol ediyoruz.




Etiketler : Veritabanı, Yazılım, PHP, Genel

Yii Framework'den jQuery Cookie(Çerez) Eklentisi'ne Erişim

Tamer tarafından, 12 27 2012 23:29:00 tarihinde yayınlandı.

Yii Framework'ün, JQuery Cookie eklentisine erişimi gayet basittir. Önemli olan script dosyanın referans bilgileri yanlış girilmemiş olmasıdır.
 Örnek olarak;

$script = Yii::app()->clientScript;
$script->registerCoreScript('jquery');
$script->registerCoreScript('cookie');
$script->registerScriptFile(CController::createUrl('/js/main.js'), 
CClientScript::POS_HEAD);

Burayı ayarladıktan sonra,  JavaScript'de çerezleri ayarlayabilirsiniz:

$.cookie("Title", "Value", {path: "/", expires: "3"});

Burada "path" erişim sağlayacağınız çerezlerin konumunu yazılıyor. "expires" ise kaç gün kalacağını belirtiyor. ve nihayet çerezi oluşturabilirsiniz.

Aşağıdaki gibi de çerezinizi çağırabilirsiniz.

$.cookie("Title");
1 | 2 | 3 | 4 | 5