Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[php|zend] Nowa biblioteka dla plików CSV (wersja 0.96)
Przyszedł czas na dojrzalszą wersję znanej już Wam biblioteki obsługującej pliki CSV (Fasic_Csv). Dojrzewając pozbyła się kilku błędów i niedoskonałości oraz uzyskała nowe ciekawe funkcjonalności (przyznam się że trochę jej w tym pomogłem).
Przykład użycia biblioteki Fasic CSV (wraz z nowymi funkcjonalnościami):
-
// Pobierz plik CSV
-
// nazwa pliku, załaduj cały plik, rozpoznaj automatycznie separator
-
$file = new Fasic_Csv(‘1.csv’, true, true);
-
// Zmień kodowanie, plik jest w kodowaniu UTF-8 natomiast my chcemy ISO
-
$file->setEncoding(‘UTF-8′, ‘ISO-8859-2′);
-
// Ustaw mapowanie dla obiektów
-
// nazwa_pola => ['numer_kolumny:typ_danych' | 'funkcja anonimowa']
-
‘price’ => ‘2:round2′,
-
));
-
// Pobierz 3 linie (nie zwiększając wskaźnika), linie liczone są od 0
-
$line = $file->line(2);
-
// Stwórz obiekt na podstawie wcześniej zdefiniowanego mapowania
-
$obj = $line->asObject();
-
// Dla linii: "Nazwa Produktu;nieuzywana kolumna;13.008"
-
// Wyświetli: "stdClass Object ([price] => 13.01 [name] => ‘nazwa produktu’)"
Oto lista zmian:
- [new] Obsługa kodowania, możliwość określania wejściowego i wyjściowego kodowania dla pliku (domyślne UTF-8) W przypadku gdy te kodowania są różne system konwertuję dane do formatu wyjściowego za pomocą iconv.
- [change] Format mapowania dla obiektu - metoda setMapping klasy Fasic_Csv
(aktualny format to ‘nazwa_pola’ => ‘numer_kolumny:typ’) - [change] Możliwość określania funkcji anonimowej dla mapowania
(np. ‘name’ => create_function(’$cells’, ‘return strtoupper($cells[2]);’) - [new] Możliwość dodania nowych komórek do linii (metoda addMoreCells klasy Fasic_Csv_Line)
- [new] Proste, ale automatyczne rozpoznawanie separatora dla komórek (między ‘;’ a ‘,’)
- [change] W metodzie cell (klasa Fasic_Csv_Line) można podać ujemny numer kolumny (wówczas pobierana jest komórka liczona od końca)
W aktualnej wersji nadal nie jest zaimplementowana opcja preLoaded = false, która umożliwiałaby wczytywanie pliku CSV linia po linii (a nie jak jest teraz załadowanie całego pliku do pamięci) - opcja ta zostanie zaprezentowana w wersji 1.0 biblioteki.
Uwaga: mam nadzieje, że oczywiste jest, iż w/w bibliotekę można używać nie tylko w aplikacjach opartych na Zend Framework - równie dobrze można z niej korzystać w jakiejkolwiek innych aplikacjach webowych napisanych w języku PHP.
Biblioteka Fasic_Csv:
- Źródła: http://webprogramming.pl/downloads/Fasic_Csv-0.96.zip
- Wersja: 0.96
- Data edycji: 12 maj 2009
- Instalacja: skopiować do katalogu Fasic, który jest w ścieżce poszukiwań skryptów PHP (w tym samym katalogu, w którym jest katalog Zend),
- Zależności: korzysta z bioblioteki Fasic_Forcetype
- Aktualizacja: w przypadku aktualizacji do nowej wersji wystarczy nadpisać wcześniej istniejące pliki (należy również zapoznać się ze zmianami, wersja 0.96 nie jest całkowicie kompatybilna z wersją 0.9)
Napisz komentarz