
Diyar
30.04.2017
14:39:41
/stat@combot

Combot
30.04.2017
14:39:41
combot.org/chat/-1001047863278

/
30.04.2017
14:47:12
https://pastebin.com/UuMZpDar
хочу из свойства protected $description;
вызвать метод public function rnd($text){)
такое можно сделать?
мне тут скинули вот это - http://stackoverflow.com/questions/4535330/calling-closure-assigned-to-object-property-directly/4535383#4535383
но я не понимаю

Chuvi
30.04.2017
14:47:53

Google

f4rt~
30.04.2017
14:48:07

/
30.04.2017
14:48:43

Chuvi
30.04.2017
14:49:09

/
30.04.2017
14:50:15
я сда уже писал
из свойва можно вывать метод?
если твоему свойству присваивается экземпляр класса, то да
типа:
$this->user = new User( $this->userId );
$this->user->getName();
скобку закрой
или как из этого масива получить рандомное значение
(array('🎷','🎸','🎧','🎹','🎺','🎻','📣')
так есть же функция
не, всеравно красным горит, это я щас потерял скобку когда экперементировал
public function rnd($text){
$rnd = mt_rand (0, count($text)-1);
return $text[$rnd];
и как эту fункцию в строку записать?

Google

/
30.04.2017
14:50:15
напиши protected $description;
а его значение установи в конструкторе
не с констурктором сложно, без него нужно
зачем тебе в таком случае вообще класс
там сложно взаимодейсвовать с констуктором, там все обстрактное
public function __construct() {
$this->description = 'поиск музыки '. $this->rnd(array('🎷','🎸','🎧','🎹','🎺','🎻','📣'));
}
параметров не хватает
fиг пойми чт о в констуктор проталкивать

f4rt~
30.04.2017
14:51:58
массив жи

Chuvi
30.04.2017
14:52:19
он там rnd переопределяет.
В итоге конкатенируется результат - элемент массива.

/
30.04.2017
14:55:33
хорошо, как у лонгмана в его командах, вызвать констуктор, в классах командах?
и какие тогда данные туда инжектить?

Chuvi
30.04.2017
14:56:01
Чо?
Нафига он тебе?
У тебя команда там когда исполняется (кто-то её боту написал) - вызывается execute(). Вот туда и пиши.

/
30.04.2017
14:58:27

Google

Chuvi
30.04.2017
14:59:27

/
30.04.2017
15:00:45

Chuvi
30.04.2017
15:00:46
Просто в $description засунь массив, в каждой команде, вместо строки.
А в /help уже рандомизируй.

Vadim
30.04.2017
15:01:12
Кто тут хелп рандомизирует?

Chuvi
30.04.2017
15:01:52
Иконочки он хочет разные чтоб при разных итерациях были. Как я понял.

Vadim
30.04.2017
15:01:53
Ааа, думал вы тут плохое делаете

/
30.04.2017
15:02:15

Chuvi
30.04.2017
15:02:42
Я и говорю - перепиши хелп - только там описание используется. Там кода-то - два экрана крупным кеглем.

/
30.04.2017
15:04:08

f4rt~
30.04.2017
15:05:03
ну так сделай array_rand из смайликов в описании

Chuvi
30.04.2017
15:05:07
Ну и напиши чтобы у тебя из дескрипшина не строка бралась, а рандомный элемент массива. Чо ты не понял то?

/
30.04.2017
15:06:35

f4rt~
30.04.2017
15:08:44
ало делаешь protected $smiles = ['1','2','3'];
делаешь в конструкторе $this->smiles = array_rand бла бла

Chuvi
30.04.2017
15:09:20
ну может так, да понял, спс
Можешь прям вот эту rnd функцию, которую ты уже сделал, public function rnd($text) добавить в HelpCommand и её юзать в хвост и гриву передавая в неё $command->description

/
30.04.2017
15:10:15

Chuvi
30.04.2017
15:11:53

Артур Евгеньевич
30.04.2017
15:14:12
Парни вопрос про SOA. Если мы выделяем какой то функционал в сервис, каким требованием он должен соответствовать?

Chuvi
30.04.2017
15:24:03
А теперь вопрос по теме чата. )))
По следам вот это вот беседы про вызов методов в виде функции. Чот я поплыл. Подскажите, пожалуйста, как правильно реализовать вот это:
class SomeClass{
public $doSomething;
public function __construct(){
$this->doSomething = вызов функции "something", а не результат её вызова при выполнении __construct
}
private function something(){
// выборка из базы, например
}
}

Google

f4rt~
30.04.2017
15:27:50
$this->doSomething = $result = (function() {
return $this->something;
})-call(new SomeClass());
не знаю насколько за такое руки не оторвут

Chuvi
30.04.2017
15:29:56
Простите, был взволнован. А что, нет... ну... что-нить пусть подлинее, но не такой shit-liner, а то я чот ничо не понял. )
Ну в смысле должен же быть какой-нить поздний вызов функций, которые могут быть не нужны, но вдруг...

f4rt~
30.04.2017
15:32:10
ну могу еще большую грязь подкинуть
статические методы

Chuvi
30.04.2017
15:33:13
А чо не так со статикой? В закрытых от публичного пользования проектах кому какое дело...

Vadim
30.04.2017
15:33:34

Admin
ERROR: S client not available

Chuvi
30.04.2017
15:35:01
Любой более-менее адекватно приносящий бабла проект рафакторят чуть ли не полностью раз в пять релизов. И ничо не умирают.

v
30.04.2017
15:35:34
его только переписать

/
30.04.2017
15:35:51

v
30.04.2017
15:35:53
а как переписыать - даже разработчики понять не могут

Chuvi
30.04.2017
15:35:56

Vadim
30.04.2017
15:36:54
Смотря что у тебя рефак

Chuvi
30.04.2017
15:38:56
Нет
Покажи мне хоть один большой опен-сорс проект, который спустя 5 мажорных релизов сохранил хоть 10 процентов изначального кода - я сниму перед тобой шляпу.

f4rt~
30.04.2017
15:39:40
большой понятие относительное)

Google

Chuvi
30.04.2017
15:40:09

f4rt~
30.04.2017
15:41:43
открыл uml и посмотрел где используется сие и офигел)

Chuvi
30.04.2017
15:43:29
И если для "обосраться 1000||100||10 разработчиков" static function и плохо, то для @MyHomeTelegramBot очень даже удобная штука и совсем не грязь.

f4rt~
30.04.2017
15:46:42
не знаю, с одной стороны можно идти на компромисы там где это нужно с другой лучше всегда и везде следовать правилам хорошего тона)
выбирать тебе

Chuvi
30.04.2017
15:49:27

f4rt~
30.04.2017
15:50:03

Chuvi
30.04.2017
15:51:33

f4rt~
30.04.2017
15:54:13
вообще судя по классу там есть проблемы с архитектурой
у тебя получается большой такой good object а хорошо бы его разделить на сущности и в базу ходить по DTO

Владимир
30.04.2017
15:55:12

Chuvi
30.04.2017
15:59:07

f4rt~
30.04.2017
16:00:09
ну коль я посоветовал грязь
хотя не, достаточно)

Chuvi
30.04.2017
16:01:25

f4rt~
30.04.2017
16:01:48
ну это типо как небольшой лайфхак)
class Any {
private $some = 23;
}
$result = (function() {
return $this->some;
})-call(new Any());
вообще вот так он объясняет о себе больше)