2015-10-21

SOLID w programowaniu obiektowym

Nazwa SOLID w programowaniu obiektowym to skrót, który określa pięć założeń:
  • S - Single responsibility (jedna odpowiedzialność)
  • O - Open/close (otwarcie na rozszerzanie, zamknięcie na modyfikowanie)
  • L - Liskov substitution (zasada podstawienia)
  • I - Interface segregation (segregacja interfejsów)
  • D - Dependency inversion (odwrócenie zależności)

The Single Responsibility Principle

A class should have only one reason to change.

Klasa powinna mieć tylko jedną odpowiedzialność. Klasy zbyt rozbudowane mogą powodować konflikty - kilka zespołów programistów może pracować na tym samym kodzie co może generować problemy i niepotrzebną stratę czasu.

The Open/Closed Principle

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

Liskov substitution

Subtypes must be substitutable for their base types.

Podklasy powinny w taki sposób nadpisywać metody głównej klasy aby zburzyć założonej funkcjonalności z punktu widzenia klienta.

Interface segregation

Zasada segregacji interfejsów mówi o sposobie komunikacji między logiką biznesową a klientem. Aplikacja złożona z modułów powinna opierać się na interfejsach z których klient może korzystać. Należy przy tym pamiętać, że klient nie powinien mieć dostępu do części interfejsu, z których nie korzysta.

Dependency inversion

Dependency inversion - odwrócenie zależności - założenie, która polega na tym aby moduły wyższego poziomu komunikowały się z modułami niższego poziomu za pomocą ustalonego poza nimi zbiorem zasad (interfejsem). Zabieg ten pozwala na łatwiejsze późniejsze modyfikowanie programu.

Źródła

2015-10-13

PHP DateTime: Pierwszy i ostatni dzień poprzedniego miesiąca

Od PHP 5.3 pierwszy i ostatni dzień miesiąca można wybrać w bardzo prosty sposób:
$dataod = new \DateTime('first day of previous month');
$datado = new \DateTime('first day of previous month');
Można w ten sposób w prosty sposób przypisać domyślne wartości w formularzu:
$command = new EksportSwiadczenDoCsvCommand();
$command->setDataod(new \DateTime('first day of previous month'));
$command->setDatado(new \DateTime('last day of previous month'));

$form = $this->createForm('platne_eksport_zlecen_do_csv', $command);

$form->handleRequest($request);

if($form->isValid()){
    //...
}
W ten sam sposób możemy wybrać również pierwszy i ostatni dzień aktualnego miesiąca - odpowiadają za to zmienne 'first day of this month' oraz 'last day of this month'.

2015-10-06

Finch - Instant Messaging client

Konfiguracja konsolowego komunikatora Finch znajduje się w katalogu ~/.purple - przenosząc się na inną maszynkę linuxową warto zabrać ten właśnie katalog ze sobą. :-)

2015-10-03

Auto-update paczki w Packagist

Aby w portalu packagist.org była zawsze aktualna wersja naszej paczki z GitHub'a należy wpisać w konsoli następujące polecenie:

curl -XPOST -H'content-type:application/json' 'https://packagist.org/api/update-package?username=m4rc1no5&apiToken=API_TOKEN' -d'{"repository":{"url":"git@github.com:m4rc1no5/ColorBashPrompt.git"}}'

Gdzie API_TOKEN to nasz token z serwisu Packagist (dostępny na stronie profilu).