🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231896

Re: Dobre praktyki

#231896
From: Wojciech Bancer
Date: Sat, 27 Jan 2018 19:35
60 lines
3208 bytes
On 2018-01-27, Marek S <precz@spamowi.com> wrote:

[...]

>> Różnica jest taka, że zależności dostarcza odpowiedni
>> manager, i kod który wykorzystuje te zależności nie ma
>> odpowiedzialności w której musi sobie daną zależność
>> sam "pobrać" - co jest najczęstszą wadą w projektach
>> opeartych o prosty singleton.
>
> Ok, to może inaczej - pójdźmy piętro wyżej. Czym jest zatem ten manager? 
> Czyż nie singletonem?

A jest powód by był singletonem?

> To co chcę powiedzieć, to to, że zawsze na szczycie aplikacji jest jakiś 
> obiekt "guru".

Ale to jest powiedzmy kernel aplikacji, który postępuje wg pewnego ustalonego
sposobu. Gdzie tu widzisz potrzebę na singletona?

> Czy nazwiemy go tak czy siak, to i tak będzie sobie 
> istniał jako byt zainicjowany na początku, z którego istnienia czerpią 
> korzyści inni. Pojęcia leksykalne są czasem rozmyte.

Ja widzę różnicę:

<?php

class PobieramZBazy() {
    ___construct($cn) { $this->cn = $cn; }
    public getCostam() {
        return $this->cn->query(...);
    }
}

vs

class PobieramZBazy() {
    public getCostam() {
        $cn = JakisGlobalnyCusik::pobierzPolaczenie();
        return $cn->query(...);
    }
}

Tylko tyle i "aż" tyle, że to pierwsze się łatwiej testuje,
bo nie trzeba kombinować ze sztucznym mockowaniem statycznych
metod, tylko można sobie wstrzyknoć co potrzeba w kontrolerze.

Czyste i eleganckie. Oczywiście jak masz dobre zarządzanie
zależnościami, np. jak w Symfony2+.

A w 90% przypadków jakie widziałem, to Wielbiciele Singletonów
potrafili pisać masywną ilość metod statycznych, bo skoro "to
tak fajnie działa w przypadku singletona, to piszmy sobie 
skróty" :P

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com
Technical Details
Message-ID: <slrnp6pl4l.mtr.wojciech.bancer@pl-test.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <2lhebv1xabri$.dlg@tyczka.com> <6d0bd754-9b46-46ce-98ff-c5265a9a93af@googlegroups.com> <chac9zcm8l6a.1gxug7ng6lbce$.dlg@40tude.net> <cd0f750f-2346-4016-bbbd-a72c386c561d@googlegroups.com> <slrnp6hci6.23ml.wojciech.bancer@pl-test.org> <fc6bfbc5-c858-4156-95c5-cb276d07067e@googlegroups.com> <slrnp6kee7.2lbk.wojciech.bancer@pl-test.org> <p4dnnf$m5b$1@node2.news.atman.pl> <slrnp6kpt1.30s7.wojciech.bancer@pl-test.org> <p4f8p3$tfb$1@node1.news.atman.pl> <slrnp6oqo7.g5g.wojciech.bancer@pl-test.org> <p4hrvu$ctn$1@node2.news.atman.pl> <slrnp6p0qc.gpr.wojciech.bancer@pl-test.org> <p4iev1$uic$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Newsgroups: pl.comp.lang.php
From: Wojciech Bancer <wojciech.bancer@gmail.com>
Subject: Re: Dobre praktyki
References: <2lhebv1xabri$.dlg@tyczka.com> <6d0bd754-9b46-46ce-98ff-c5265a9a93af@googlegroups.com> <chac9zcm8l6a.1gxug7ng6lbce$.dlg@40tude.net> <cd0f750f-2346-4016-bbbd-a72c386c561d@googlegroups.com> <slrnp6hci6.23ml.wojciech.bancer@pl-test.org> <fc6bfbc5-c858-4156-95c5-cb276d07067e@googlegroups.com> <slrnp6kee7.2lbk.wojciech.bancer@pl-test.org> <p4dnnf$m5b$1@node2.news.atman.pl> <slrnp6kpt1.30s7.wojciech.bancer@pl-test.org> <p4f8p3$tfb$1@node1.news.atman.pl> <slrnp6oqo7.g5g.wojciech.bancer@pl-test.org> <p4hrvu$ctn$1@node2.news.atman.pl> <slrnp6p0qc.gpr.wojciech.bancer@pl-test.org> <p4iev1$uic$1@node2.news.atman.pl>
Organization: None
Date: Sat, 27 Jan 2018 20:35:49 +0100
User-Agent: slrn/1.0.3 (Darwin)
Mime-Version: 1.0
Message-ID: <slrnp6pl4l.mtr.wojciech.bancer@pl-test.org>
Lines: 60
NNTP-Posting-Host: 37.47.128.20
X-Trace: 1517081749 unt-rea-b-01.news.neostrada.pl 1667 37.47.128.20:10796
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit