Size: a a a

2020 December 04

V

Vladimir in phpGeeks
GODU
Возник другой вопрос, нужен интерфейс, хочу использовать паттерн фасад к нему существуют альтернативы? А то по сути баланс между low/high coupling
Вопрос-то изначально какой? Может пример кода есть? Для чего интерфейс и фасад?
источник

G

GODU in phpGeeks
Shurick
не забивай голову, пиши код
уже поздно, я фанатею потихоньку, надо спасать))
источник

S

Shurick in phpGeeks
себя или другого?
источник

G

GODU in phpGeeks
Vladimir
Вопрос-то изначально какой? Может пример кода есть? Для чего интерфейс и фасад?
<?php

namespace App\BusinessLogic;

require 'vendor/autoload.php';

use App\BusinessLogic\System\{Client, Objects, Provider};

/**
* Интерфейс системы парсера  
*/
class ParserFacade
{
   /**
    * @var Client
    */
   private $client;
   
   /**
    * @var Objects
    */
   private $objects;
   
   /**
    * @var Provider
    */
   private $provider;

   /**
    * Инициализация подсистемы парсера
    *
    * @param Client|null       $client  
    * @param Objects|null      $objects  
    * @param Provider|null     $provider    
    */
   public function __construct(
       ?Client $client = null,
       ?Objects $objects = null,
       ?Provider $provider = null
   )
   {
       $this->client = $client ?: new Client();
       $this->objects = $objects ?: new Objects();
       $this->provider = $provider ?: new Provider();
   }

   /**
    * Сохранить объект в БД
    */
   public function saveObject()
   {
       // save mysql and mongo
   }

   /**
    * Получить объекты предоставляемые провайдером
    *
    * @param providerURL|null  $client  
    * @param filterParams|null $client  
    */
   public function getObjects($providerURL, $filterParams, $configsClient)
   {
       // Client request
       $objects = $this->client->request($providerURL, $filterParams, $configsClient);
   }

   public function validation()
   {
       // check phone number and Avito ID
   }
}
Балванка на фасад
источник

G

GODU in phpGeeks
Shurick
себя или другого?
Меня))
источник

G

GODU in phpGeeks
GODU
<?php

namespace App\BusinessLogic;

require 'vendor/autoload.php';

use App\BusinessLogic\System\{Client, Objects, Provider};

/**
* Интерфейс системы парсера  
*/
class ParserFacade
{
   /**
    * @var Client
    */
   private $client;
   
   /**
    * @var Objects
    */
   private $objects;
   
   /**
    * @var Provider
    */
   private $provider;

   /**
    * Инициализация подсистемы парсера
    *
    * @param Client|null       $client  
    * @param Objects|null      $objects  
    * @param Provider|null     $provider    
    */
   public function __construct(
       ?Client $client = null,
       ?Objects $objects = null,
       ?Provider $provider = null
   )
   {
       $this->client = $client ?: new Client();
       $this->objects = $objects ?: new Objects();
       $this->provider = $provider ?: new Provider();
   }

   /**
    * Сохранить объект в БД
    */
   public function saveObject()
   {
       // save mysql and mongo
   }

   /**
    * Получить объекты предоставляемые провайдером
    *
    * @param providerURL|null  $client  
    * @param filterParams|null $client  
    */
   public function getObjects($providerURL, $filterParams, $configsClient)
   {
       // Client request
       $objects = $this->client->request($providerURL, $filterParams, $configsClient);
   }

   public function validation()
   {
       // check phone number and Avito ID
   }
}
Балванка на фасад
точка входа
<?php

namespace App\BusinessLogic;

use App\BusinessLogic\System\{Client, Objects, Provider};
use App\BusinessLogic\ParserFacade;

// API access to the provider
$provider = [
   'user'    => '',
   'token'   => '',
   'site'    => ''
];

$configsClient = [
   'timeout' => 2.0
];

$providerURL = $site . 'user=' . $provider['user'] . 'token=' . $provider['token'];

// Filters params
$filterParams = 'source=1&limit=2';


// Enterpoint in system
$parser = new ParserFacade();
$parser->getObjects($providerURL, $filterParams, $configsClient);
источник

G

GODU in phpGeeks
Есть предложение или критика как не надо делать? мне не нравится что сигнатуру в методах нужно дублировать в нескольких местах $parser->getObjects(тут) потом в самом фасаде, а внутри фасада эти же параметры пробрасываются методу реквест классу клиент WTF?
источник

S

Shurick in phpGeeks
GODU
Есть предложение или критика как не надо делать? мне не нравится что сигнатуру в методах нужно дублировать в нескольких местах $parser->getObjects(тут) потом в самом фасаде, а внутри фасада эти же параметры пробрасываются методу реквест классу клиент WTF?
код в pastebin а то плохо так
источник

G

GODU in phpGeeks
Shurick
код в pastebin а то плохо так
ok
источник

E

Enjoys in phpGeeks
Ух портянки...)
источник

A

Andrey DEV in phpGeeks
коллеги - такой вопрос - открываю страницу с параметрами в гет - все работает - делаю точно такой же запрос через postman - не работает , шо может быть?
источник

S

Shurick in phpGeeks
Andrey DEV
коллеги - такой вопрос - открываю страницу с параметрами в гет - все работает - делаю точно такой же запрос через postman - не работает , шо может быть?
не используй постман
источник

A

Andrey DEV in phpGeeks
да это то ясно - но интересно почему
источник

in phpGeeks
Не работает это как?
источник

in phpGeeks
404/500/еще что-то?
источник

V

Vitaly in phpGeeks
Andrey DEV
да это то ясно - но интересно почему
открой девтулс и смотри какой из заголовков ты не отправил
источник

A

Andrey DEV in phpGeeks
Не работает это как?
не, не до конца функционал отрабатывает
источник

A

Andrey DEV in phpGeeks
Vitaly
открой девтулс и смотри какой из заголовков ты не отправил
спс, гляну
источник

in phpGeeks
Andrey DEV
не, не до конца функционал отрабатывает
Понятнее не стало
источник
2020 December 05

A

Alexander in phpGeeks
Кто любит задачки?

1. На проде js скрипт который каждую секунду опрашивает сервер.
2. 1000 юзеров загрузило страницу с этим скриптом и оставило вкладку открытой.
3. На проде обновили скрипт, он перестал опрашивать сервер каждую секунду.
4. Сервер перезапустили.

Как сделать так, чтобы старый скрипт, который уже загружен у юзеров, перестал каждую секунду опрашивать сервер?
источник