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
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”
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