php, postgresql, mysql, javascript

java, jsf, jpa, jasper reports, pardus, linux, freebsd, ubuntu, solaris, damn small server

PHP Application Object

Yorum yapılmadı

Uzun zamandır konu sıkıntısı yaşamamın üzerinden yeniden ilginç bir konuyla geri döndüm. :)
JSP, .NET, ve çağdışı kalmış ASP bile application object içerirken PHP dili neden application object içermez ?

Bunun cevabını bilmiyoruz. Ancak öte yandan PHP ile bunu yapmak oldukça basit.
Bize lazım olan bir Cache nesnesi, bir Application nesnesi ve bir model.
Şimdi örneğimizi yapmaya başlıyoruz;

 
class Application{
	private static $xcobj;
	private $cache;
	private function __construct(){
		$this->cache = Cache::getInstance();
		$this->cache->setTimeLimit(5);
	}
	private final function __clone(){}
	public static function getInstance(){
		if (!(self::$xcobj instanceof Application)){
			self::$xcobj = new Application();
		}
		return self::$xcobj;
	}
	public function put($name_,$obj_){
		$this->cache->$name_ = $obj_;
	}
	public function get($name_){
		return $this->cache->$name_;
	}
}
 
 
$product = new Product();
$product->setProductCode("code")->setPrice(30);
$application = Application::getInstance();
$application->put("product",$product);
var_dump($application->get("product"));

Bu aslında daha önce değindiğimiz cache kullanma işinin daha modern hali.

Böyle birşey bize nerede lazım olur ?

  • Başka bir siteden bilgi çekip ekranda gösterirken. Döviz kurlarını TCMB sitesinden çekip gösterebilirsiniz. Böylece yoğun trafiğiniz varsa her seferinde TCMB'den bilgi çekmek zorunda kalmazsınız.
  • Karmaşık bir sorguyu veritabanından çekerken gelen sonuçları buraya atabilirsiniz.
    Yada veritabanı sunucusu ile web sunucusu ayrı makinalarda ise iki makina arasındaki trafiği azaltmak için sonuçları bellekte tutabilirsiniz.
  • Ana sayfada gösterilen ve her seferinde yeniden boyutlandırılan yada üzerine yazı yazılan resimler gibi yüksek işlemci gerektiren işlemleri her seferinde yapmak yerine 5-10 dakikada bir yapabilirsiniz.

Kolaylık olsun diye dosyaları da buraya ekliyorum.
application_object.zip



Yorum Yapın