Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu php Kanał ATOM (tag: php)

Autor wpisu: matipl, dodany: 19.07.2012 18:59, tagi: php

PHPCon Poland - logoOd początku lipca można zapisywać się na tegoroczną edycję polskiej konferencji poświęconej PHP – PHPCon Poland.

W podstawowych kwestiach nic się nie zmieniło od zeszłego roku – organizatorem jest PLUG (=niskie ceny ;) ), miejsce to samo – 15 km od Kielc, Mąchocice Kapitulne (delegacja z Trójmiasta?). Sama konferencja odbędzie się w dniach 28-30 września. Znamy już również pierwszych prelegentów – będzie to m.in. Wim Godden, twórca systemu reklamowego phpAdsNew (obecnie znany jako OpenX) czy  Thijs Feryn.

Jak już wspomniałem wcześniej, reszta agendy zależy od Was samych – uczestników. Po rejestracji istnieje możliwość oddania głosu na wybrane przez Was prelekcje.

Na chwilę obecną 1/3 miejsc dla uczestników jest już zajęta. Rejestracja będzie możliwa teoretycznie do 14 września, ale prawdopodobnie w sierpniu skończą się wolne miejsca. Cena jak zwykle przystępna:

  • do 14 sierpnia 290 zł (dla firm 350 zł netto)
  • do 31 sierpnia 310 zł (dla firm 370 zł netto)

Dlatego warto pospieszyć się z decyzją…

Autor wpisu: batman, dodany: 19.07.2012 07:00, tagi: php

Niecałe dwa tygodnie temu pojawił się interesujący artykuł traktujący o PHP 5.5. Jego autor na podstawie dostępnych informacji, próbuje zarysować wygląd kolejnego dużego wydania tego języka. Ponieważ za wcześnie jest na jakiekolwiek deklaracje, wszystko pozostaje w sferze przypuszczeń. Niemniej wygląda (…)

Read the rest of this entry »

Autor wpisu: Damian Tylczyński, dodany: 18.07.2012 22:45, tagi: php

Opis fundamentów wykorzystanych do implementacji prostego systemu zarządzania encjami, czyli elementami logiką biznesową w DDD.

Autor wpisu: Damian Tylczyński, dodany: 17.07.2012 20:32, tagi: php

Kilka słów wstępu o DDD i procesie mapowania danych (data mapper).

Autor wpisu: bastard13, dodany: 17.07.2012 14:14, tagi: oop, php

ten pieprzony init

Zend w wersji 1.x obfitował w klasy, które posiadały deklarację pustej metody init(), która była wywoływana w konstruktorze.Do czego jest ona wykorzystywana? Twórcy Zenda doszli do wniosku, że jeżeli chcesz np. stworzyć odpowiednio skonfigurowany formularz (np. do dodawania produktów), to idealnym rozwiązaniem będzie rozszerzenie klasy Zend_Form i umieszczenie całej kofiguracji owego formularza w nadpisanej metodzie init(), która wykona się przy tworzeniu nowego obiektu.Sprytne, no nie? I jeszcze w dodatku można pokusić się o stwierdzenie, że jest to implementacja wzorca template method. Chciałbym jednak zasmucić wszystkich tych, którzy praktykują takie rozwiązanie. Ani to sprytne nie jest, a użycie wzorca jest niepoprawne i niepotrzebne. Czytaj więcej »

Autor wpisu: Śpiechu, dodany: 15.07.2012 16:59, tagi: php

Dzisiaj o bibliotece Monolog, która prawdopodobnie na dobre zadomowiła się w niektórych aplikacjach PHP. Służy do generowania różnego rodzaju logów. Jest bardzo fajnie przemyślana i rozszerzalna. Możemy sobie praktycznie wszystko ustawić tak jak chcemy, począwszy od nazw plików dziennika, przez format zapisu, aż do dodatkowych informacji załączanych do poszczególnych wpisów.

„Initial commit” na GitHubie powstał dokładnie 16 lutego 2011 r. Monolog liczył sobie wtedy zaledwie 383 linijki kodu. Już po kilku dniach autor dokonał poważnych zmian w źródłach w celu dostosowania struktury i działania biblioteki do pythonowego Logbook. W czerwcu 2011 r. biblioteka zaczyna współpracować z Composerem. Ostatnim „kamieniem milowym” było uruchomienie ciągłej integracji w serwisie Travis w listopadzie 2011 r.

Jeśli idzie o ocenę jakości kodu to nie mam do czego się przyczepić. Biblioteka trzyma się nazewnictwa PSR-0 oraz standardów PSR-1 i 2. Można śmiało używać standardowego SplClassLoadera lub autoloader.php wygenerowanego przez Composera. Komentarze dot. stałych, zmiennych, klas i metod są na tyle jasne, że łatwo można się połapać co do czego służy i jak to rozbudować.

Podstawowy sposób użycia wygląda tak:

// importujemy logger i podstawowa obsluge plikow
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
 
// tworzymy obiekt logger i handler
$debugLogger = new Logger('moj_debug_logger');
 
// wybieramy plik i poziom waznosci wpisow, od ktorych beda zapisywane w dzienniku
$debugHandler = new StreamHandler(__DIR__.'/debug.log', Logger::DEBUG);
 
// umieszczamy handler w loggerze
$debugLogger->pushHandler($debugHandler);
 
// od teraz mozna umieszczac wpisy w loggerze np.
$chybaInteger = 1.0;
if (!is_integer($chybaInteger)) {
  $debugLogger->addDebug(
    'Nie podoba mi sie typ zmiennej $chybaInteger :' . gettype($chybaInteger)
  );
}

Loggery i handlery można ze sobą dowolnie mieszać. Stworzymy sobie 2 loggery: db_logger i app_logger oraz 2 handlery: plików debug.log i powiadamiający mailem o poważnych błędach.

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\NativeMailerHandler;
 
$appLogger = new Logger('app_logger');
$dbLogger = new Logger('db_logger');
 
$debugFileHandler = new StreamHandler(__DIR__.'/debug.log', Logger::DEBUG);
$appLogger->pushHandler($debugFileHandler);
$dbLogger->pushHandler($debugFileHandler);
 
$errorMailHandler = new NativeMailerHandler(
  'jakis@mail.com',
  'Powazny blad w aplikacji',
  'donotreply@moja_appka.pl',
  Logger::ERROR);
$appLogger->pushHandler($errorMailHandler);
$dbLogger->pushHandler($errorMailHandler);
 
// w pliku debug.log powstanie wpis
// [2012-07-15 12:57:46] app_logger.WARNING: Ostrzezenie [] []
// mail nie bedzie wyslany
$appLogger->addWarning('Ostrzezenie');
 
// powiedzmy, ze nie mozna polaczyc z baza danych
// blad krytyczny laduje w debug.log i zostaje wyslany mailem
$dbLogger->addAlert('Nie mozna polaczyc z baza danych');

Możemy również dodawać informacje dodatkowe (tu nazywane Processors), np. szczytowe zużycie pamięci lub informacje na temat żądania HTTP za pomocą metody pushProcessor().

Jeśli jeszcze nam mało to możemy sobie zmieniać format zapisu logów za pomocą formatterów. Jeśli komunikaty mają być przetwarzane automatycznie to polecam JsonFormatter.

Autor wpisu: Łukasz Socha, dodany: 15.07.2012 14:05, tagi: php

W wpisie tym usystematyzuję i pogrupuję wszystkie opisane wzorce projektowe.

 

 

Co to jest wzorzec projektowy?

Za Wikipedią:

Wzorzec projektowy (ang. design pattern) – w inżynierii oprogramowania, uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych. Pokazuje powiązania i zależności pomiędzy klasami oraz obiektami i ułatwia tworzenie, modyfikację oraz pielęgnację kodu źródłowego. Jest opisem rozwiązania, a nie jego implementacją. Wzorce projektowe stosowane są w projektach wykorzystujących programowanie obiektowe.

Wszystkie wzorce możemy podzielić na następujące rodziny:

  • Kreacyjne (konstrukcyjne) – opisujące proces tworzenia nowych obiektów; ich zadaniem jest tworzenie, inicjalizacja oraz konfiguracja obiektów, klas oraz innych typów danych.
  • Strukturalne – opisujące struktury powiązanych ze sobą obiektów.
  • Czynnościowe – opisujące zachowanie i odpowiedzialność współpracujących ze sobą obiektów.

Spis treści

Wzorce kreacyjne:

Wzorce strukturalne:

  • Tymczasowo brak

Wzorce czynnościowe:

Pozostałe:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.