lutego 28 2008

Cache - klasa do cachowania danych

Tag: PHPMatheW @ 1:10

Mam do zaprezentowania własną klasę do cachowania. Umożliwia ona obok podstawowej funkcji odczytywania danych z danym czasem ważności podział danych na grupy, usuwanie wybranych danych z cache, grupy, bądź całego cache, wybór sterowników (aktualnie utworzona jest jedna strategia - do zapisu do plików, jednak spełniając interfejs CacheDriver możemy napisać własny - np. do zapisu do pamięci czy bazy), prosty debugMode - włączenie spowoduje wyrzucanie wyjątków.

Kod sprawdzany na PHP 5.2.1, powinien uruchamiać się na każdym PHP5.

Klasa jest opublikowana na licencji GPL.

Przykład:


	require_once 'cache.class.php';
	require_once 'fileCacheDriver.class.php';

	function getPrinters(){
		return array('HP 845C', 'Canon E23', 'Lexmark L45');
	}

	try {
		$cache=new Cache();
		$cache->addDriver('file', new FileCacheDriver());

		$printers=$cache->get('products', 'printers', 500); # zwraca dane z cache z grupy products o id printers

		if($printers===false) { #nie ma danych w cache
			$printers=getPrinters();
			$cache->set('products', 'printers', $printers); #ustawia dane do cache
		}	

		var_dump($printers);
	}
	catch (CacheException $e){
		echo 'Error: '.$e->getMessage();
	}

Pokaż cały kod
Pobierz


lutego 17 2008

Drzewa kategorii w SQL i PHP metodą IP

Tag: MySQL, PHPMatheW @ 1:46

Drzewa kategorii w relacyjnych bazach danych to ciekawy temat. Różnych implementacji takich drzew jest wiele, ale żadna nie jest idealna – istotna jest łatwość w modyfikacji drzewa, szybkość pobierania danej gałęzi do wyświetlania, czy zliczania podkategorii w gałęzi.

Jak wspomniałem implementacji jest wiele – poczynając od podstawowego lecz nieoptymalnego rozwiązania z polem identyfikacyjnym rodzica, po nested sets czy metodę depesza. Część z nich opisanych jest tutaj.

Mi jednak spodobał się jeszcze inny sposób - Materialized Path AKA drzewka ip.

Continue reading “Drzewa kategorii w SQL i PHP metodą IP”


lutego 13 2008

Nagły zryw CodeIgniter - ostatni?

Tag: PHPMatheW @ 13:26

Na przestrzeni dwóch tygodni wydano 2 nowe wersje frameworka CodeIgniter 1.6.0 i 1.6.1. O ile pierwsza aktualizacja była dość spora, to druga przynosi niewiele zmian, ale i tak jak na projekt, który wydawał się umierać, taki nagły zryw może zdumiewać.

Z głównych zmian, jakie przyniosły nowe wersje wyróżnić można nową klasę DBForge do manipulacji bazami danych i ich tabel, dodanie nowych przydatnych metod do Active Record (tyle, że nie wiedzieć czemu ten twór przyjmuje taką nazwę - przykładową implementację wzorca Active Record można zobaczyć tu), a także wiele innych zmian, nowych funkcji i poprawek bugów. Pełny opis zmian w ChangeLog.

Czy te zmiany uratują ten framework? Raczej nie. Perspektywa znanej nam z CI elastyczności i lekkości, wzbogacona o nowe możliwości, PHP5, dynamikę rozwoju i inne plusy Kohany przekonuje, że to raczej w tym frameworku drzemie przyszłość. Tym bardziej, że zmiany w CI nie są jakieś rewolucyjne, dodatkowo developerzy nie zapowiadają przejścia na PHP5.

Biorąc to wszystko pod uwagę przechodzę na Kohane, podobnie zresztą czyni sporo dotychczasowych użytkowników CI. W każdym bądź razie do CI zostanie sentyment, sporo w końcu w nim czasu się bawiłem.

PS. Zarejestrowałem bloga na nowo powstałym Blogbox. Jak komuś podoba się mój blog, to proszę pomóc mu dostać się tam poprzez głosowanie :]

Dodatkowo zainspirowany notką założyłem sobie OpenID na myopenid.com oraz dodałem wtyczkę OpenID do Wordpressa także możecie pisać komentarze za pomocą swojego OpenID :)