
B?N
15.11.2016
06:25:13
есть trait, допустим Confirmable,
в нем есть функция confirm(),
есть несколько классов, родителем которых является общий абстрактный класс.
в некоторых классах надо добавлять этот trait, а в некоторых не надо. сам метод confirm - публичный и будет вызыватся из вне.
Вопрос такой:
как правильно определить использует ли класс этот трейт и потом вызвать функцию эту или нет?
class_uses - знаю, но она скорее для автозагрузки подходит чем для этого... может есть что то вроде instanceof только для trait-ов ?

Sergey
15.11.2016
06:25:40
создай интерфейс
наследуй классы использующие трейт интерфейсом и проверяй через instanceof
или вообще просто тайпхинтинг сделать на этот интерфейс и ничего не проверять - пусть падает если в него что-то не то передали. В данном случае нужно проверять не реализацию (используемый трейт), а определение (по интерфейсу). Это называется инкапсуляцией

Google

Sergey
15.11.2016
06:27:28
Если не путаю термин

B?N
15.11.2016
06:28:35
http://php.net/manual/en/function.method-exists.php
может так? )

Sergey
15.11.2016
06:28:49
метод эксист - это не ООП подход :)
можешь так, но что будет, если у тебя будут 2 класса с одинаковым методом confirm(), но использующиеся в соверщенно разных местах?
код запутается и выполнит это. а вот упадет что или не упадет и насколько серьезно - это уже дело случая

B?N
15.11.2016
06:31:09
суть в том что снаружи у меня код будет типа такой
if (есть_трейт) {
$obj->confirm()
}
сейчас у меня просто
$obj->confirm()
и без трейтов, просто вставил заглушку функции во все классы, но такой подход мне вообще не нравится))

Sergey
15.11.2016
06:32:31
interface ConfirmableInterface {
public funciton confirm();
}
class A implements ConfirmableInterface {
use ConfirmableTrait; // мы можем использовать любой другой трейт или реализовать функцию самому
}
class B {
public function confirm() {};
}
function test(ConfirmableInterface $c) {
$c = $c->confirm(); // мы точно знае что в этом месте класс делает что нам надо, за это отвечает ConfirmableInterface
}
test(new A()); // Заработает
test(new B()); // Упадет, так как мы передали не то что нам надо, но с методом confirm
Тебе надо продумывать это место не отталкиваясь от реализации (трейта), а от определения функций (интерфейса). Это сокрытие и есть постулат ООП
один из них

B?N
15.11.2016
06:34:27
Супер!
теперь все понял, спасибо за пример

Sergey
15.11.2016
06:35:34
?

Google

Константин
15.11.2016
06:43:38
Приветствую, коллеги подскажите, как получить URL, по которому переходил пользователь, до того момента как его поймал фильтр авторизации? Redirect::intended() передает уже сформированный html, а если задача получить именно путь изначального перехода строкой, то как быть?

Dmitriy
15.11.2016
17:23:04
Centralised Logging System for Laravel in an ElasticStack https://www.youtube.com/watch?v=2DL1c9k67og
Слайды https://github.com/mewm/laravel-elastic-stack-cls-docker

Wolf
15.11.2016
17:48:29
Привет всем. Кто-то делал карусель рулетку на js?

F01134H
15.11.2016
17:51:55
Привет, а ты умеешь читать?
вдруг заметишь, что это чат не по js

D'
15.11.2016
17:54:24

F01134H
15.11.2016
17:55:04
Ой, сорян, перепутал

O2B3K
15.11.2016
19:44:25
kto polzuyetsya phpstorm 2016.2

Golib
15.11.2016
19:53:39
Текстовый Редактор ))

B?N
15.11.2016
19:57:09
PhpStorm 2016.2.1
Build #PS-162.1889.1, built on August 23, 2016
Licensed to Bon Jovi
Subscription is active until February 25, 2017
JRE: 1.8.0_76-release-b216 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

Wolf
15.11.2016
20:48:15

JT
15.11.2016
20:49:54
подскажите для Лары 5.3 какой-нить красивый генератор документации?
надо на route + Controller

Алексей
15.11.2016
21:09:12
Читаемый код, лучше любой доки

JT
15.11.2016
21:11:30
да код-то читаемый
но хотелось бы на АПИ сгенерить красивый док

Алексей
15.11.2016
21:12:28
Swagerwell только приходит на ум
Дока хорошая но изначально трудно вникнуть )

Alexander
15.11.2016
22:12:31

Алексей
15.11.2016
22:14:19
Инфиум поди кинешь?)

Google

Alexander
15.11.2016
22:14:28
нет
https://github.com/dingo/blueprint
если юзаешь dingo api в качестве api

B?N
15.11.2016
22:22:15
В ларе есть какая-то встроенная функция которая будет вызывать исключение если переданное значение не является истиной ? типа assert но для продакшена

D'
15.11.2016
22:22:51
оО

Dmitriy
15.11.2016
22:25:01
чет я не понял

B?N
15.11.2016
22:26:18
в общем задача такая , надо провалидировать данные входные (приходят они не через Request) внутри одного процесса
надо генерить исключение если утверждение является ложью
то есть по сути можно сделать типа так
if ($a === false) throw new Exception('А =! true');
но хочется как то красивее сделать. есть мысли?

D'
15.11.2016
22:26:53
ну сделай валидатор
и валидируй

Quiss
16.11.2016
06:26:18
Bon ты же в Валидатор первым аргументом передаешь значения, вторым условия, третим текст ошибок, если требуется
что мешает использовать? :)

Меня зовут
16.11.2016
09:26:00
и валидируй
Привет, у тeбя нет случайно списка городов израиля в xml?

D'
16.11.2016
09:26:13
csv

Меня зовут
16.11.2016
09:26:41

D'
16.11.2016
09:27:03
на иврите

Меня зовут
16.11.2016
09:27:13
печаль(

D'
16.11.2016
09:27:27
из втентакле спарси на русском
Вот кстати xml https://data.gov.il/dataset/d2581732-eca4-4988-b986-df8e791a1d60/resource/4bc8ec43-08dd-4dc3-a6ab-bd52e137fb8c/download/rechovot20161101.xml

Меня зовут
16.11.2016
09:28:19

JT
16.11.2016
09:36:00
есть вопрос, делаю из Лары
return response()->json([
'state' => false
]);
и получаю это в Андроид приложении, но JSONObject не хочет принимать false без кавычек
вопрос: как можно объяснить Ларе брать в кавычки Boolean ?

Google

Алексей
16.11.2016
09:37:22
state = $state? 'true' : 'false'; ?

JT
16.11.2016
09:44:04
щас получаю:
{
"state": false,
"msg": "password mismatch"
}
а надо чтобы стало:
{
"state": "false",
"msg": "password mismatch"
}

D'
16.11.2016
09:44:31
ну епт
так и передавай 'state' => "false"

JT
16.11.2016
09:46:27
спасибо!
но это ж костыльно :)
хотя и креативно :)

D'
16.11.2016
09:47:08
это очевидно

Admin
ERROR: S client not available

D'
16.11.2016
09:47:14
можешь сделать красиво
свой APIResponse, который будет true/false в стринг переделывать

JT
16.11.2016
09:50:22
а теперь таже проблема, но с null
блин
это ж не кошерно

D'
16.11.2016
09:50:41
100% в твоем JsonOBject проблема
выкинь его

JT
16.11.2016
09:50:52
не могу - он в Ведроиде :)

D'
16.11.2016
09:50:53
или научи понимать нормальный жсон

JT
16.11.2016
09:51:07
отож, я ж вижу что это валидный json
а хавать он не хочет

Google

Евгений
16.11.2016
11:42:42
можно как то отвалидировать значение boolean or date_format:H:i ?

Sergey
16.11.2016
12:00:46
в одном параметре может быть или бул или дата?

(;¬_¬)
16.11.2016
12:01:17
ну видимо да, а почему нет?

Sergey
16.11.2016
12:01:57
Плохо
проблем от этого делать. Если булеан означает отсутствие даты, то null его сделать
В одной переменной хранить разнотиповые значения приводит к очень сложному коду и к очень сложному чтению кода
а nullable, в целом, привычное поведение

(;¬_¬)
16.11.2016
12:04:00

Sergey
16.11.2016
12:04:48
С радостью :) и еще половине встроенных функций PHP

Roman ?
16.11.2016
12:06:48
почему они до сих пор не переделали в ооп стиле все?
мне кажется там еще какие то причины есть, кроме недостатка времени
там же мусорка сейчас просто

Sergey
16.11.2016
12:08:09
Я разговаривал с одним из разработчиков в этом году на кодфесте в новосибирске, в общем, все фразы, "что мешает переделать нормально" сводились к тому, что обратная совместимость
и типа все привыкли, мы менять не можем
особенно удивил такой ответ на вопрос - добавите ли вы возможность перегрузки операторов, для контроля чудачества PHP

Roman ?
16.11.2016
12:08:50
ничего не мешает оставить старое на месте

Sergey
16.11.2016
12:08:55
ответ - нет, сломает обратную совместимость
Второй по популярности ответ мне нравился больше. "Это есть внутри в PHP, но такого функционала нет. Вы можете написать модуль"
И на вопрос, "как мне получить список импортов для модуля через рефлексию и планируется ли такое, очень нужно" я получил ответ: Никак, не планируется, это никому не нужно

Евгений
16.11.2016
12:37:43