![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
pomyślałem, że podziele się klockami w PHP z których korzystam w różnych projektach. Projekt nazywa się PHP Commons i jest to zbiór luźnych bibliotek, które na co dzień upraszczają mi życie podczas developerki. Część z nich powstała bo kod oferowany np: w zendzie czy symfony nie spełniał moich oczekiwań co do chociażby elastyczności. Orginalne repozytorium ma już kilka lat, najnowszy branch nazywa się php_commons-4 i powstaje powoli zgodnie z aktualnymi potrzebami, refaktoring i dopisywanie nowych kawałków kodu. Od niedawna z niektórych kawałków korzysta znajomy deweloper, i skoro on jest z tego zadowolony to może komuś jeszcze się to przyda. Projekt jest dostępny na githubie: https://github.com/cepa/php_commons-4 Jest on zintegrowany z moim lokalnym SVN'em, z którego merguje stabilne zmiany do githuba. Nad kontrolą jakości czuwa Jenkins, który testuje kod na następujących konfiguracjach: - PHP 5.3.x, PHP 5.4.x - MySQL 5.1.x, MySQL 5.5.x - PostgreSQL 8.4.x, PostgreSQL 9.1 Dodatkowo część testów zawiera: Memcache, APC, Redis, Cassandra, Gearman Aktualne pokrycie kodu to ok 87% (coverage). Ficzery: - Commons/Application - Abstrakcja klasy aplikacji (Web, CLI, itp) - Commons/Autoloader - Prosty autoloader zgodny z SPL i composerem - Commons/Buffer - Wrapper na output buffer - Commons/Callback - Wrapper na wszystko co jest callable, funkcje, metody, closures - Commons/Config - Biblioteka do konfiguracj z adapterami do Array, XML - Commons/Console - Szkielet konsolowej aplikacji do uruchamiania tasków - Commons/Container - Abstrakcyjne kontenery - Commons/Curl - Wrapper do curla - Commons/Entity - Biblioteka lekkich encji - Commons/Event - Programowanie zdarzeniowe - Commons/Filter - Baza dla filtrów - Commons/Http - Narzędzia do obsługi HTTP - Commons/Json - Biblioteka do jsona - Commons/KeyMap - Abstrakcyjny rozproszony kontener do łączenia kluczy w keystore - Commons/KeyStore - Implementacje keystore (Session, APC, Memcache) - Commons/Light - Mini frejmłork MVC - Commons/Log - Biblioteka do logowania (strumień, syslog) - Commons/Migration - Biblioteka do migracji - Commons/Moo - Mikroframework oparty o closures, inspirowany Sintatra z Ruby - Commons/Plugin - Baza dla pluginów - Commons/Process - Narzędzie do uruchamiania procesów i przechwytywania wyjścia - Commons/Sql - Implementacja SQL z róznymi adapterami, wspiera replikację master-slave, zawiera prosty ORM i Query Builder do składania zapytań - Commons/Template - Baza dla "szablonów" - Commons/Timer - Timer do benchmarków - Commons/Utils - Inne narzędzia - Commons/Validator - Baza dla validatorów - Commons/Xml - Biblioteka XML Przykłady użycia znajdują są tutaj: https://github.com/cepa/php_commons-4/tree/master/examples Nie jest tego dużo ale kod rozwija się z dnia na dzień i powoli dorzucam reszte klocków więc będzie tego sporo więcej w najbliższych dniach. Z ciekawszych wynalazków: Query Builder: https://github.com/cepa/php_commons-4/blob/...e_sql_query.php Repozytorium lekkich encji (mogą być zapisywane w dowolnej warstwie persistent ktora implementuje interfejs): https://github.com/cepa/php_commons-4/blob/...le_sql_repo.php MOO frejmłork: https://github.com/cepa/php_commons-4/blob/...bsite/index.php Na dniach będzie: - implementacje keystore dla Apache Cassandra, MongoDB, Redis - biblioteka do programowania rozproszonego z urzyciem Gearmana - biblioteka do przetwarzania obrazków Zachęcam do przejżenia kodu i prosze o opinie i konstruktywną krytykę. Projekt jest otwarty, licencja BSD, jakby ktoś był zainteresowany użyciem lub dodaniem czegoś od siebie to walić na priv. -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 21.05.2013 Ostrzeżenie: (10%) ![]() ![]() |
What the fuck?
![]() Ale ogolnie jak najbardziej ok ![]() Ten post edytował alex011251 26.05.2013, 08:33:33 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Super kolekcja. Wystarczy podpiąć do swojego frameworka jako vendor i można swobodnie korzystać. Pierwszy raz widzę Moo, ale wygląda na fajne narzędzie do tworzenia na szybko, jednak z tego co widzę jakieś dziwne, nieorientacyjne nazwy metod ![]() Ale ogólnie fajnie, że się podzieliłeś swoim zbiorem. -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 128 Dołączył: 17.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Taki "no-framework framework"
![]() Fajnie prezentuje się ta biblioteka. Na pewno wielu skorzysta, dzięki wielkie. Tak mi się kojarzyło nazwisko, ale nie zajarzyłem dopóki nie przeczytałem w kodzie "hellworx". Kiedyś w poszukiwaniach bugtrackera trafiłem na Vermisa ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pozytywny feedback
![]() Dodałem nowy przykład, który mam nadzieję, naświetli idee stojące za tym kodem, co jak i dlaczego. https://github.com/cepa/php_commons-4/blob/...stapi/index.php Jest to kompletne REST API, które operuje na książkach na bazie SQL. Generalnie jest to prototyp API oparty o closures w MOO, który operuje na encjach, gdzie warstwa persistent to baza MySQL. Można repozytorium encji zmienić na np: keystore i wtedy bez zmian w kodzie, to API zadziała z Mongo czy z Cassandrą. Na zachęte, tak to wygląda mniej więcej:
Opis jak to działa: http://lukasz.cepowski.com/devlog/46,fast-...-microframework Ten post edytował cepa 26.05.2013, 10:02:33 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie zagłębiałem się zbytnio w kod, ale trochę mnie zastanawia czemu ciągle obiekt Moo jest przekazywany jako parametr dla funkcji anonimowej, skoro Moo to i tak już obiekt sam w sobie i te wszystkie metody można by wykonywać przez $this. Generalnie mozna by to zrobić w ogóle pozbywając się anonimowych funkcji. Mniej powtarzania kodu i chyba bardziej czytelnie.
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jest nowe demko, jest to prosta aplikacja klasy RIA w Dojo Toolkit i Commons, który wystawia data store (SQL).
![]() ![]() Opis: http://lukasz.cepowski.com/devlog/47,how-t...and-php-commons Działające demo: http://demo.hellworx.com/php_commons-demo-dojo/web/ Kod: https://github.com/cepa/php_commons-demo-dojo Projekt jest budowany za pomocą phinga, posiada konfiguracje, model data store, inkrementacyjne migracje i w miare odseparowany backend of frontu. Troche cięzko znaleść dobre przykłady do Dojo, więc może się komuś przyda w pełni funkcjonalna apka ![]() Ten post edytował cepa 31.05.2013, 12:12:49 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 20:16 |