о применении MVC

HraKK

Мудак
Команда форума
Absinthe, Рафаэль Санти как раз был очень посвященным человеком и в освещении и пропорции очень хорошо разбирался. То что он не рисовал в стиле фотореализма не его вина, перечитай что я пытался донести. Рубенса, я бы вообще не трогал на твоем месте. Ты как раз подтверждаешь мои слова.

Проблема не в том что они лучше или хуже наших, понятно что сейчас мы намного выше стоим априори по ступени развития, а проблема в подготовке.
 

WMix

герр M:)ller
Партнер клуба
Шишкина на тебя нет! И Репина!
он правду говорит, да, конечно есть еще направление рисовать и натюрморты и людей, но сейчас существует фотографии, и художники, все кого я знаю, занимаются абстракциями, мультяшками ... важнее чтоб был правильный теплый фон, чтоб это нравилось, чтоб отражало настроение, то что в кафешке, бюро,... можно повесить
они с вдохновением рассказывают о светотенях, о формах, о красках о психологии, -- мир другой и вас портретом кстати тоже врятли соблазнишь
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
Absinthe, это его типичная реализация через getInstance - антипаттерн, а в гарантии наличия в системе одного экземпляра используется повсюду.
на самом деле это веселая тема, глобальные переменные - антипаттерн, отсюда синглтоны - антипаттерн. God object - тоже антипаттерн, а DI как раз таким и является.
 

Redjik

Джедай-мастер
в odesk dev team вообще говорят ногами бьют за new, все через DIC =)
 

Adelf

Administrator
Команда форума
Absinthe, Redjik, BTW, а мона глянуть где-нибудь на целостный более-менее веб проект.. где все через DIC?
 

Redjik

Джедай-мастер
Adelf, я сам у Вурдалака выпрашиваю уже сколько времени... сам не видел - говорят они есть ... единороги тоже говорят существуют =))

на самом деле все просто и я могу себе представить полностью как и что должно работать, кроме инжектинга модели в контроллер =(
 

fixxxer

К.О.
Партнер клуба
на самом деле все просто и я могу себе представить полностью как и что должно работать, кроме инжектинга модели в контроллер =(
Ну, например, через DI создается фабрика моделей, которая инъектится в контроллер.
 

fixxxer

К.О.
Партнер клуба
Почему? $modelFactory->get(UserModel::class)

Хотя понятно, что это все заметание под ковер :)
 

Adelf

Administrator
Команда форума
Хотя понятно, что это все заметание под ковер
Exactly. Не понимаю.. этой излишне синтетической любви людей к "крутым" технологиям. Но на пример бы глянул. Все равно интересно.
 

hell0w0rd

Продвинутый новичок
Redjik,
Код:
parameters:
    user_entity.class: App\CoreBundle\Entity\User
    user_repository.class: App\CoreBundle\Repository\UserRepository

services:
    user_repository:
        class: "%user_repository.class%"
        factory_service: doctrine
        factory_method: getRepository
        arguments: ["%user_entity.class%"]
У меня файлик выделен под конфиг репозиториев. Как сказал @fixxxer это заметание под ковер, потому что у доктрины там своя фабрика, но ничего не поделаешь)
 

hell0w0rd

Продвинутый новичок
Absinthe, Вурдалак, ну так на DIC все завязано. Он хранит все объекты, знает все зависимости, в нужное время инициализирует, единственное - сам ничего не использует.
 

hell0w0rd

Продвинутый новичок
Redjik,
PHP:
abstract class Repository extends EntityRepository implements \IteratorAggregate
{
    /**
    * @return ArrayCollection
    */
    public function getIterator()
    {
        return new ArrayCollection($this->findBy([]));
    }
}
PHP:
class UserRepository extends Repository
{
    /**
    * @param string $type
    * @param string $username
    *
    * @return User|null
    */
    public function findByToken($type, $username)
    {
        $qb = $this->createQueryBuilder('u');
        $qb->join('u.oauthTokens', 't')->addSelect('t');
        $qb->where('t.type = :type AND t.username = :username');
        $qb->setParameters([
            'type'    => $type,
            'username' => $username
        ]);
        $query = $qb->getQuery();

        return $query->getOneOrNullResult();
    }

    public function update(UserInterface $user, $flush = true)
    {
        $this->_em->persist($user);
        if ($flush) {
            $this->_em->flush($user);
        }
    }
}
В контроллерах не используются кастомные методы, в OAuthProvider инжектится.

https://github.com/Sylius/Sylius - вот вообще пример полностью написанный в лучших традициях симфони, пыхтящий как паровоз, чтоб завестись, но работающий)
PS вообще меня преследует стойкое ощущение что с php надо валить на какой ни будь sailsjs, ибо быстрее, удобнее, проще.
 

Redjik

Джедай-мастер
ага, понял, только update у тебя опасный такой =)
с UnitOfWork можно получить неожиданное поведение + если еще и в принудительной транзакции что-то происходит

вообще кто-нибудь пытался удачно на деструктор flush навешать?
 
Сверху