Fayozjon [CybernatiC]
25.09.2017
11:25:32
+1 member = 1111
Awesome
Konstantin
25.09.2017
15:21:07
Ребзя, как можно скопировать обьект класса (синглтон), если __clone public?
Немного чот затупил))
Google
Kirill
25.09.2017
15:25:25
да
поэтому синглтон имеет приватный клон
синглтон с открытым клоном - не синглтон ?
Konstantin
25.09.2017
15:26:10
нене, мне нужно понять как его скопировать)
тут дело не в патерне, а в понимании больше всего
Kirill
25.09.2017
15:26:30
тогда такой вопрос - зачем тебе его копировать?
тут конфликт понятий
не, на пхп можно с легкостью выстрелить себе в ногу и сожрать её, но лучше все же хотя бы пытаться писать хороший код хд
Dmitry
25.09.2017
15:34:35
Konstantin
25.09.2017
15:35:16
Dmitry
25.09.2017
15:36:02
Копирование - это не создание, конструктор не исполняется
Kirill
25.09.2017
15:37:26
Ну а вообще:
public function clone__force() {
return clone self::$obj;
}
Google
Kirill
25.09.2017
15:37:44
Но все же, задумайтесь, так ли оно нужно.
Dmitry
25.09.2017
15:37:51
Ну ты наверное читал вопрос, да? ;)
Konstantin
25.09.2017
15:39:25
нет, я это понимаю) мне просто нужно понять, как склонировать его, если у меня __clone публичный а конструктор приватный, это мне нужно только для себя, для понимая
не более
Sergey
25.09.2017
15:40:17
public function __clone()
{
$copy = new self();
}
даже если приватный конструктор - ты его из контекста того же класса вызываешь
Konstantin
25.09.2017
15:41:00
в не класса, я не смогу его склонировать?
Kirill
25.09.2017
15:41:09
нет
Konstantin
25.09.2017
15:41:26
все, теперь понятно, спасибо)
Kirill
25.09.2017
15:42:38
Могу ошибаться, но вот такая конструкция может сработать:
trait ezcReflectionReturnInfo {
public function __clone() {
return clone self::$obj;
}
}
abstract class SingletoneWrapper extends SingletoneEx {
use ezcReflectionReturnInfo;
}
Если
а) $obj - protected
б) тебе потребуется вызвать его один раз
Dmitry
25.09.2017
15:47:37
пффф.... $a = Foo::getInstance(); $b = clone $a;
Kirill
25.09.2017
15:48:03
Собственно, абсолютно верно:
<?php
class SingletoneEx {
static $obj = null;
protected $data;
private function __construct() {}
private function __clone() {}
public static function get() {
if (is_null(self::$obj))
self::$obj = new self();
return self::$obj;
}
public function setData($d) {
$this->data = $d;
}
public function getData() {
return $this->data;
}
}
trait ezcReflectionReturnInfo {
public function __clone() {
return clone self::$obj;
}
}
abstract class SingletoneWrapper extends SingletoneEx {
use ezcReflectionReturnInfo;
}
# ------------------------------#
$obj = SingletoneEx::get();
$obj->setData(333);
$el = SingletoneWrapper::get();
echo $el->getData();
#=333
Dmitry
25.09.2017
15:49:06
Ребзя, как можно скопировать обьект класса (синглтон), если __clone public?
Kirill
25.09.2017
15:49:51
Синглтон не может иметь такого метода /_-
Dmitry
25.09.2017
15:50:16
какого такого?
Kirill
25.09.2017
15:50:25
public __clone
Dmitry
25.09.2017
15:50:50
php сломается и перестанет работать? ;)
Google
Kirill
25.09.2017
15:50:51
Синглтон - это когда все аллоцирующие методы приватные.
Нет, сломается логика человека, который будет читать код :)
Dmitry
25.09.2017
15:52:04
а это уже другой вопрос, у кого-то сломается от публичного клона, а у кого-то - просто от Синглтона
Kirill
25.09.2017
15:52:37
Не, бесспорно, писать можно как угодно.
Вопрос лишь в том, для кого этот код пишется. Увидел бы такое на кодревью - задал бы вопрос, а понимает ли товарисч, что вообще такое синглтон.
Dmitry
25.09.2017
15:53:39
синглтон - совсем не обязательно getInstance :)
Kirill
25.09.2017
15:53:44
Dmitry
25.09.2017
15:54:24
в DI контейнере тоже может сингтон быть как бы
Kirill
25.09.2017
15:54:44
В тч.
Denis
26.09.2017
05:21:18
Ребят, подскажите пожалуйста. Заказчик хочет инфрэопортал, при этом чтоб была интеграция с его как он говорит супер защищённой crm
Но самое главное, у него нет никакого при и он не даст дописать туда кода. Его профессионал разработчик из штата говорит чтоб я передавал данные через фреймы и никак иначе. Может я чего то не понимаю? Фреймы это же обычный хтмл
Апи*
Антон
26.09.2017
05:28:25
В супер защищённых только через флоппи дискеты можно данные передавать. Скажи ему
Denis
26.09.2017
05:31:40
О, точно
Антон
26.09.2017
05:33:55
Ну спроси у их разраба точный формат данных, пусть тебе разложит по полочкам если не хочет следовать популярным практикам
Скажи что ты не телепат, и хорошо бы получить примеры
Ну и лучше оценить риски в этом проекте, не потратишь ли ты сильно больше времени чем надо и не уйдешь ли по деньгам в минус. Слова о "супер защищённой crm" как первый звоночек неадекватности заказчика
ainu
26.09.2017
05:41:27
Возможно имеется в виду авторизация по явакскрипту (как ВКонтакте свои апи авторизует) - довольно защищенно, при этом у разработчиков доступа к ключам нет, к паролям нет, к ВКонтакту тоже нет.
Хотя если бы не разаботчик из Штатов, у меня тоже бы заиграл не то что звоночек, звонище: битрикс24 через фреймы делает модули для црм своей.
Dave
26.09.2017
06:00:18
я бы пеканул бы их обоих в анус.
и чувака и заказчика
Google
Dave
26.09.2017
06:00:34
за фреймы.
Sergo
26.09.2017
06:04:31
???
Fayozjon [CybernatiC]
26.09.2017
06:05:18
Привет ребят!
В Yii2 есть $_FILES ?
кто нибудь знает Yii2 ?
При выводе говорит Array()
то есть пустой массив
хотя файл приходит
Sergo
26.09.2017
06:05:51
может слишком большой файл?
Fayozjon [CybernatiC]
26.09.2017
06:06:06
Sergo
26.09.2017
06:06:10
Я знаю, если в POST передать слишком много данных, то будет пустой массив
Fayozjon [CybernatiC]
26.09.2017
06:06:10
Благодарю
ainu
26.09.2017
06:12:49
Saško
26.09.2017
06:13:04
Ещё такое может быть, если enctype в форме не указать
Ыыыы
Fayozjon [CybernatiC]
26.09.2017
06:24:26
Saško
26.09.2017
06:30:01
Тогда попробовать мелкий файл отправить, пару килобайт
Sergo
26.09.2017
06:31:29
кстати, да )
Ещё такое может быть, если enctype в форме не указать
Fayozjon [CybernatiC]
26.09.2017
06:31:37
Спасибо
Google
Fayozjon [CybernatiC]
26.09.2017
06:31:49
Через форму норм