22
lis
Autor: Marcin kategoria: Sprawy co-dzienne poza IT-yczne, Zapiski co w PHPie tyka | Tagi :klasa osłonowa dla PHP, php rzutowanie typów, rzutowanie w php, String PHP, typ String | Brak komentarzy
Jak wiadomo PHPe nie jest językiem o silnym typowaniu. W wyniku tego do funkcji możemy przesyłać praktycznie wszystko. Często brak wstępnego określania typu parametrów w deskryptorze metod/funkcji pogarsza jakość i czytelność kodu. Osobiście czytając czyjś kod lubię wiedzieć co przyjmuje funkcja/metoda tzn. jaki konkretny typ parametrów one przyjmują. Dość często powstaje różnego rodzaju pomieszania typów, czyli wchodzi string potem przemieniany jest na inta a na wyjściu na dodatek możemy dostać obiekt… Ponadto w PHPe pomimo bogatej proceduralnej biblioteki do obsługi łańcuchów znaków nie istnieje jej wersja obiektowa, a szkoda… Z tego też względu pokusiłem opisać szkicowe rozwiązanie umożliwiające połączenie przyjemnego z pożytecznym tj. utworzenie klasy osłonowej na typ String ułatwiającej operację na obiektach tego typu. Rozwiązanie to daje:
1. Możliwość pośredniego rzutowania na dobrze zdefiniowany typ String
2. Możliwość sprawdzania typu String przez interpreter, tego czy przekazujemy prawidłowy parametr do funkcji/metody
3. Ustala konwencję w kodowaniu i aplikacji.
W miarę możliwość w następnych dniach postaram się opisać prezentowane rozwiązanie. Póki co ograniczę się do przedstawienia samego kodu. Czytaj dalej
20
lis
Autor: Marcin kategoria: Sprawy co-dzienne poza IT-yczne, Zapiski co w PHPie tyka | Tagi :overloading and namespace, php overloading, php przeciążanie, php przeciążanie i przestrzeń nazw, php sposoby na przeciążanie, przeciążanie i przestrzeń nazw | Brak komentarzy
Jednym z najbardziej dla mnie niekomfortowych żeczy w PHPe jest brak możliwości przeciążania czy to funkcji czy też metod w kontekście OO. Jak wiadomo związane jest to z brakiem m.in. ścisłej kontroli typów. No cóż rzeczywistość jest jaka jest i trzeba do niej się dostosować. Najczęściej pojawiającym się zabiegiem w celu implementacji „przeciążania” metod jest użycie magicznych metod. Sposób takiej implementacji można podejrzeć w wpisie „Method Overloading in PHP5” na blogu Caught in a Web. Osobiście nie przepadam za tego rodzaju rozwiązaniami. Tak więc w wolnym czasie zacząłem główkować i kombinować jak to można by był zrobić troszkę inaczej. Z przemyśleń narodził się pomysł aby do „przeciążania” (pseudo przeciążania) wykorzystać namespace (opis dostępny w manualu PHP oraz na stronie z poradnikami IBMa „Create better namespaces in PHP”). Pomysł bazuje na prostych zasadach:
– wykorzystaniu bazowej przestrzeni nazw dla metod podstawowych które będą przeciążane, zaimplementowane lub nadpisane w klasach potomnych. Najlepiej wykorzystać abstrakcje,
– wykorzystaniu predefiniowanych przestrzeni nazw do enkapsulacji przeciążanych klas i ich metod,
– zamknięcie przestrzeni bazowej i predefiniowanej w jednym pliku (daje to swego rodzaju konwencję utrzymania kodu i jego standaryzację w obrębie realizowanego projektu). Ewentualnie można odpowiednio sobie porozbijać klasy na pliki. Opisu tego rozwiązania jednak nie dokonałem i jedynie skupiłem się na podstawowej strukturze – jeden plik.
Przykładową implementację całości rozwiązania bazującego na ww. zasadach przedstawiłem poniżej. Miłego czytania i zapoznawanie się z pomysłem. Czytaj dalej
18
lis
Autor: Marcin kategoria: Ogólne zapiski kusownika it-yka, Zapiski co w PHPie tyka | Tagi :generowanie wsdl, generowanie wsdl dla php, klasy php do wsdl, php to wsdl, php webservices, php wsdl, web services php, webservices | Brak komentarzy
Właśnie, web serwisy ważna technika w codziennej pracy programistycznej… Właśnie sobie przypomniałem, że istnieje framework dla PHPa to tworzenia web serwisów i generowania WSDLa z odpowiednio otagowanej klasy. Bliższe szczegóły możecie znaleźć na stronie WSF PHP | WSO2, natomiast mały wstęp pokazujący co i jak i w dodatku po polsku można odnaleźć na „Jak napisać w PHP własny Web Service korzystając z rozszerzenia WSF / WSO2.”. Powodzenia i miłego programowania.
Do generowania WSDLa podobno nadaje się Webservice Helper znajdujący się na jool.ln ale tego rozwiązania nie stosowałem, jeśli ktoś miał z nim do czynienia to zachęcam do podzielenia się doświadczeniem.
26
sie
Autor: Marcin kategoria: Zapiski co w PHPie tyka | Tagi :dobre praktyki PHP, PHP praktyki programowania | Brak komentarzy
Co prawda już trochę „wiekowy” artykuł, ale wart polecenia ze względu, że rozwiązania tam przedstawione są ponad wiekowe. Polecam więc zapoznać się z zawartością artykułu „7 dobrych obiektowych nawyków dla programistów PHP„. Zachęcam do zaznajomienia się z pozostałą bazą artykułów dotyczącą programowania na serwisie IBM.
20
sie
Autor: Marcin kategoria: Ogólne zapiski kusownika it-yka, Sprawy co-dzienne poza IT-yczne, Zapiski co w PHPie tyka | Tagi :admin tools, GUI, interfejs graficzny GUI, mongo admin tools, mongoDB, mongoDB GUI, narzędzia administracyjne | Brak komentarzy
Przy projektowaniu baz danych w szczególności dla większych i bardziej złożonych projektów, przydają się narzędzia graficzne czy to do projektowania bazy czy też administracji. Aktualnie dla MongoDB są dostępne cztery narzędzia do administrowania i zarządzania tą bazą danych, są nimi:
– konsola MongoDB – odpowiednik konsol postgreSQL czy MySql
– GitHub – służy do wizualizacji i zarządzania klastrami
– futon4mongo
– phpMoAdmin – coś na wzór popularnego phpMyAdmin
Bliższe szczegóły i linki do ww. projektów można znaleźć w poście A Couple of Nice GUI Tools for MongoDB.
Dodatkowo, szperając po sieci odnalazłem wzmiankę na temat obiektowego mapowania dokumentów do MongoDB przez Doctrine 2.0. Zainteresowanych odsyłam na stronę bloga Doctrine MongoDB Object Document Mapper.
20
sie
Autor: Marcin kategoria: Ogólne zapiski kusownika it-yka, Zapiski co w PHPie tyka | Tagi :mongoDB, nie ralcyjne bazy danyc, noRDMS | Brak komentarzy
Ciekawych rozwiązań projektowym pośrednim między ang. key/value stores a relacyjnymi bazami danych jest projekt mongoDB. Natknąłem się na niego czytając post „ORMs and relational databases: powerful tools or dumb ideas?”. Jak zawsze zachęcam do zapoznania się z materiałami na temat tego rozwiązania. Bliższe szczegóły na temat projektu i jego zastosowania można znaleźć na stronie producenta mongoDB jak i szperając po wyszukiwarkach, polecam „marchewkę„. Poniżej podaję też namiary na parę interesujących wpisów, artykułów na temat mongoDB:
– MongoDB – Ruch NoSQL przyszłością baz danych?
– Zarządzanie danymi w bazie MongoDB
– MongoMapper Indy.rb Presentation
Postscriptum osobiście mażę o obiektowej bazie danych dla PHPa aby można było porzucić różnego rodzaju ORMy i składować swoje modele biznesowe prosto do bazy danych bez mapowania, tak jak to mogą robić programiści w JAVIE lub C# w bazie db4o. Póki co jednak zostają ORMy lub mosty między PHPem a JAVa myślę jednak, że to jeszcze nie to…
29
cze
Autor: Marcin kategoria: Ogólne zapiski kusownika it-yka, Zapiski co w PHPie tyka | Tagi :abstrac, abstract factory, abstrakcje, anty-wzorce, badna czworga, uml, wzorzec abstrakcji | Brak komentarzy
O abstrakcjach a dokładniej wzorcu dotyczącym abstrakcji występującym w programowaniu obiektowym napisano już wiele. Tak więc aby już się nie powtarzać i opisywać rzeczy powszechnie znanych pragnę jedynie podać trzy interesujące pozycje: dwie książkowe i jedną elektroniczną. Pierwsza pozycja dotyczy książki pt. „PHP5. Obiekty, wzorce, narzędzia” autorstwa Matta Zandstra. Nie jest to pozycja zbyt łatwa i przyjemna niemniej stanowi ona pierwszą książkę o programowaniu obiektowym w php5 i znajdujące się tam wytłumaczenie wzorca abstrakcji jest jak najbardziej dostępnie wytłumaczone dla czytelnika. Drugą pozycję literaturową, drukowaną stanowi już kultowa publikacja pt. „Wzorce projektowe” która wydana została przez tzw. Bandę Czworga w skład której wchodzą tak znani programiści jak: Erich Gamma , Richard Helm , Ralph Johnson oraz John Vlissides. Ostatnim źródłem z którego można czerpać informację na temat wzorca abstrakcji, ale i nie tylko, jest blog SourceMaking. Na blogu tym opisano, oprócz powszechnie stosowanych wzorców projektowych, także zagadnienia dotyczące: anty-wzorców, refaktoryzacji oraz modelowania za pomocą języka UML. Zapraszam gorąco do lektury.
2
cze
Autor: Marcin kategoria: Ogólne zapiski kusownika it-yka, Zapiski co w PHPie tyka | Tagi :doctrine, doctrine + zf, doctrine i zend framewrok, namespace, phar, php web serwice, semantic web, sieć semantyczna, web serwis, wso2 | Brak komentarzy
Szperając trochę po sieci i starając odnaleźć zagubioną niegdyś myśl dotyczącą pakowania aplikacji w jeden plik natknąłem się na ciekawy blog Macieja Wilguckiego. Przedstawia on w jasny i sposób w jaki sposób używać phara i przestrzeni nazw. Zaciekawionych tą tematyką odsyłam bezpośrednio na wspomnianego bloga do sekcji poświęconej Phar&Namespace. W dalszej kolejności mogę zarekomendować blog Rumena Vermeerscha na którym opisał podstawową konfigurację i integrację Doctrine z ZFem. Zainteresowanych odsyłam do artykułu umieszczonego bezpośrednio na jego stronie Integracja ZF i Doctrine. O integracji tych dwóch rozwiązań można poczytać także tutaj ZF+Doctrine. Trzymając się treści phpowych dla zainteresowanych tematyką web serwisów mogę polecić framework wso2 którego dokumentacja znajduje się na stronie http://wso2.com/products/web-services-framework/php/#tabs. Dla osób chcących poczytać w rodzimym języku na temat zastosowania tego frameworka polecam stronę http://www.pageneration.com/profile/php. Natomiast dla pasjonatów tematyki sieci semantycznych polecam blog Semantic Web. Sieć nowej generacji.
14
maj
Autor: Marcin kategoria: Zapiski co w PHPie tyka | Tagi :Adam Szekalski naprawa motocykli, moto-garage, moto-garage białystok, moto-garage.pl, serwis motocykli | Brak komentarzy
Ostatnio zamknięty został nowy projekt dla Moto Garage Adam Szekalski. Projekt był już dość złożony edycja wszytskich treści we front-endzie poprzez panel administratora z beckendu. Tak więc klasyczny CMS został postawiony. Wszystko zwyczajowo w ZF 1.10. Pozostaje teraz tylko to wszystko wypozycjonować w przeglądarkach. Stronę można oglądać pod adresem Moto Garage.
20
kw.
Autor: Marcin kategoria: Zapiski co w PHPie tyka | Brak komentarzy
Mam masę linków do różnych blogów które nie zmieściły by się w Blogroll. Tak więc odsyłam bezpośrednio z posta do miejsc ciekawych i wartych przejrzenia. Ostatnio, a może nawet znowu, zajmowałem się wgrywaniem wielokrotnym plików i paskami postępu. Zend framework od wersji chyba 1.8 oferuje rozszerzenie Zend_ProgressBar jego opis instalacji, konfiguracji i działania został opisany prosto, jasno i przyjemnie na blogu http://mateusztymek.pl/blog/zend-form-i-wysylanie-plikow-cz-3. Porzuciłem jednak to rozwiązanie na rzecz uploadify (www.uploadify.com) z powodu tego, że Zend_ProgressBar do wgrywania plików z torzonym paskiem postępu wymaga instalacji rozszerzenia z PECL – APC lub uploadprogress. Wymaga to więc najczęściej serwera dedykowanego lub operatora który dostarczy nam takie rozszerzenia.