Merhabalar,
Olay güdümlü (EvendBased) programlama bize her alanda lazım olabilecek, ve bazı yerlerde kod kalabalığı yerine işlemleri bölebilmemize yarayabilecek bir metod, daha önce Csharp kategorisinde event based programming ile ilgili ufak bir örnek yapmıştım, bu örneği bir de php ile göstermek istedim, open source scriptlerin çoğu, hatta hepsi diyebiliriz event’ları plugin amaçlı kullanmaktadır. Aslında bi bakıma doğru bir yaklaşım çünkü modüleriteden farklı ama aynı zamanda modüleriteyi sağlayabilecek yapıyıbir arada ancak böyle yazabilirsiniz.

Abstract:

  • Anasayfa
    • Header
      • Header başlamadan önceki işlemler (BeforeHeader Event)
      • Gerçek header işlemleri
      • Header sonrası işlemler (AfterHeader Event)
    • Content
      • Content başlamadan önceki işlemler (BeforeContent Event)
      • Gerçek content işlemleri
        • Postlar
          • Post Öncesi işlem (BeforePost Event)
          • Post İşlemi
          • Post Sonrası işlemler (AfterPost Event)
        • Pagination
      • Content sonrası işlemler (AfterContent Event)

Bu event flaglari tam burada yapılacak işlem var mı diye kontrol edilip varsa çalışıtırılan, gerekirse kendisinden sonraki işlemi etkileyebilecek processleri yürüten kısımlardır. Bizim de kendi scriptlerimizde, olay noktalarımız ve bu noktalarda tetiklenmesi gereken diğer olayları kontrol eden bir mekanizmamız olsun istiyoruz. O halde. Öncelikle basit bir event.bind ve event.run metodları olan bir sınıf hazırlayalım

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
	class event
	{
		#callbacks array.
		private static $flags = array();
 
		/**
		* register a callback for an event point.
		*/
		public static  function register($event_point,$callback)
		{
			self::$flags[$event_point][] = $callback;
		}
 
		/**
		* run event_points callback at this time!
		*/
		public static function run($event_point)
		{
			if(isset(self::$flags[$event_point]))
			{
				foreach(self::$flags[$event_point] as $callback)
				{
					if(is_callable($callback))
					{
						call_user_func($callback);
					}
				}
			}
		}
	}
 
?>

sınıfımız basit olarak verilen fonksiyonu belirttiğimiz point name ile saklıyor ve run() denilen yerde o point name için verilmiş tüm callbackleri çalıştırıyor. aşağıdaki bir sayfamız olduğunu düşünelim,

0
1
2
        event::run('before_header');
	echo "burası header";
	event::run('after_header');

bu sayfamızda, headerdan önce ve sonra bir event point var, header oncesinde ve sonrasında yapaağımız işlemlerde artık headera dokunmadan “event” sınıfımızı kullanarak yapabiliriz (plugin mantığı yani)
şimdi bir event register örneği yapalım.

0
1
2
3
4
5
6
7
8
9
event::register('before_header',function()
	{
		echo "header başlamadan önce bu event çalıştı";	
	});
 
 
	event::register('after_header',function()
	{
		echo "header bittikten sonra bu event çalıştı";	
	});

php mantığını unutmayalım register() fonksiyonları run() dan önce yazılmalı, sistemlerimizi buna göre yapalım. pek açık olmasa da php bilginize bağlı olarak pek zor bir iş olmayacaktır sizin için, sorularınız varsa bu post altına alabilirim, Teşekkürler

mybb için arama motorlarından gelen ziyaretçilerin arama motoruna yazdığı kelimeleri renklendiren  eklenti biraz geliştirlebilir ama sanırım şimdilik bu yeter

Örnek Görüntü:
MyBB Highlighter Plugin

Plugin Dosyası:
MyBB Keywords Highlighter Plugin v1.0 (UTF-8)

mybb’ye dayımın isteği üzerine admin paneli için geliştirdiğim istatistik plugini

  • günlük haftalık aylık  ziyaretçi raporları
  • referans siteler ve arama motoru referansları
  • sitenize en con referans olan anahtar kelimeler

Örnek Görüntü:
MyBB İstatistik Plugin

Plugin Dosyaları:
MyBB Sayaç v1.0

mybb konu açma sayfasında yazı başlığı yazılırken daha önce açılmış benzer başlıkları gösteren ajax bir uygulama
örnek görüntü :
MyBB Benzer Konu Plugin
 

 

 

plugin dosyası :

similar-threads-checker-v101-utf-8

© 2012 Tufan Suffusion theme by Sayontan Sinha