Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Side Effects Rule PSR-1 konflikty
trzczy
post
Post #1





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Przedstawiam 2 kody, które są niezgodne z Side Effects Rule.
KOD1
  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. $obj = new Johny\Foo\Bar();


KOD2
  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. include 'addresses_for_mailing.php';
  4. $mailer = new Johny\Foo\Mailer($addresses);
  5. $mailer->send();
  6. $mailer->report();


Mam nadzieję, że mniej więcej widać, co programista chciał osiągnąć...

KOD1
Wczytuje autoloader i od razu z niego korzysta.

KOD2
Korzysta z klasy Mailer oraz spisu adresów zawartego w oddzielnym pliku. Potem wysyła mejle i sporządza raport z wysyłania.

I teraz moje pytanie. Jak zbudować te aplikacje, żeby były zgodne z PSR-1 Side Effects Rule. Czy da się zachowując odrębność plików, czyli bez umieszczenia wszystkiego w jednym pliku. Czy może programiści jednak nie przejmują się tą zasadą?

Z góry dziękuję

Ten post edytował trzczy 29.07.2016, 10:19:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Ta zasada nie pozwala mieszać deklarowania (klas, funkcji, ustawień etc.) z wykonywaniem kodu.

Jeśli masz w pliku deklarację klasy, to nie powinno być tam żadnego include. Jeśli natomiast w danym pliku coś robisz, to… nie da się przecież nie zrobić include.

Zresztą to jest w pierwszym zdaniu tej zasady:
Cytat
A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both.


Kod wykonujący konkretne działania może mieć skutki uboczne. Kod deklarujący klasy, funkcje itd. – nie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 18:20