Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

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: Kamil, dodany: 17.07.2012 00:09, tagi: javascript

Bookmarklety to małe skrypty JavaScript przechowywane jako adresy URL, których kliknięcie (wywołanie) powoduje wykonanie owego kodu i tym samym pozwalają rozszerzyć wbudowane możliwości przeglądarki w kontekście aktualnie oglądanej strony. W niniejszym wpisie zaprezentuję kilka używanych przeze mnie bookmarkletów przydatnych każdemu web developerowi (czy innemu opiekunowi stron internetowych). Mobile Perf by Steve Souders Jeden z bardziej [...]

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.