Open Power Collector to uniwersalny interfejs do udostępniania różnych hierarchicznych danych. Można z niego zbudować system konfiguracji, albo np. gromadzić informacje o danym żądaniu HTTP. Jest on nastawiony na rozszerzanie i adaptację do nowych zastosowań. Uniwersalny interfejs dostępowy może dam całkiem dużo - nasz kod staje się dzięki temu niezależny od źródła danych konfiguracyjnych oraz tego, czym te dane tak właściwie są. Równie dobrze możemy je wczytywać z pliku konfiguracyjnego, generować dynamicznie na podstawie uprawnień, jak i w elegancki sposób testować w PHPUnit.
Przykładowe użycie w roli zbieracza danych o żądaniu HTTP:
use Opl\Collector\Collector; use Opl\Collector\Visit\HostLoader; use Opl\Collector\Visit\ConnectionLoader; $visit = new Collector(); $visit->loadFromLoader(Collector::ROOT, new HostLoader()); $visit->loadFromLoader(Collector::ROOT, new ConnectionLoader());
Przykładowe użycie w roli systemu konfiguracji:
<?php use Opl\Collector\Collector; use Opl\Collector\Configuration\IniFileLoader; $loader = new IniFileLoader('./config/'); $loader->setFile('config.ini'); $collector = new Collector(); $collector->loadFromLoader(Collector::ROOT, $loader); if($collector->get('system.module.option')) { doSomething(); } else { doSomethingElse(); }
Obecnie zaimplementowana funkcjonalność:
- Możliwość gromadzenia i udostępniania danych hierarchicznych
- Możliwość wyciągnięcia całej grupy opcji
- Możliwość ładowania danych w dowolne miejsce hierarchii danych (tj. możemy dany plik konfiguracyjny doładować np. bezpośrednio do głównego poziomu, jak i podczepić jego zawartość pod jakiś węzeł).
- Obsługa cache'owania przy pomocy niewydanego jeszcze Open Power Cache
- Zestaw domyślnych ładowarek:
* Do budowy systemu konfiguracji: ładowanie danych z plików YAML, XML, INI.
* Do budowy zbieracza danych o żądaniu HTTP: informacje o zdalnym hoście, informacje o połączeniu.
Planowana funkcjonalność:
- Przyspieszenie dostępu do często używanych zagnieżdżonych opcji
- Ładowanie wartości jednej opcji z innej opcji
- Nowe ładowarki informacyjne o żądaniu HTTP; w szczególności chcę przeportować mechanizm rozpoznawania przeglądarki i systemu operacyjnego.
* Kod + bugtracker: Github
* Download
* Dokumentacja
Chętnie wysłucham kulturalnych opinii na temat tego projektu i możliwości jego dalszego rozwoju. Od razu też mówię: istnienie polskiej dokumentacji uzależnione jest od tego, czy ktoś ją po prostu przetłumaczy, przy czym ktoś != ja.