Anonymous
есть trait, допустим Confirmable, в нем есть функция confirm(), есть несколько классов, родителем которых является общий абстрактный класс. в некоторых классах надо добавлять этот trait, а в некоторых не надо. сам метод confirm - публичный и будет вызыватся из вне. Вопрос такой: как правильно определить использует ли класс этот трейт и потом вызвать функцию эту или нет? class_uses - знаю, но она скорее для автозагрузки подходит чем для этого... может есть что то вроде instanceof только для trait-ов ?
Sergey
создай интерфейс
Sergey
наследуй классы использующие трейт интерфейсом и проверяй через instanceof
Sergey
или вообще просто тайпхинтинг сделать на этот интерфейс и ничего не проверять - пусть падает если в него что-то не то передали. В данном случае нужно проверять не реализацию (используемый трейт), а определение (по интерфейсу). Это называется инкапсуляцией
Sergey
Если не путаю термин
Anonymous
http://php.net/manual/en/function.method-exists.php
Anonymous
может так? )
Sergey
метод эксист - это не ООП подход :)
Sergey
можешь так, но что будет, если у тебя будут 2 класса с одинаковым методом confirm(), но использующиеся в соверщенно разных местах?
Sergey
код запутается и выполнит это. а вот упадет что или не упадет и насколько серьезно - это уже дело случая
Anonymous
суть в том что снаружи у меня код будет типа такой if (есть_трейт) { $obj->confirm() } сейчас у меня просто $obj->confirm() и без трейтов, просто вставил заглушку функции во все классы, но такой подход мне вообще не нравится))
Sergey
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
Sergey
Тебе надо продумывать это место не отталкиваясь от реализации (трейта), а от определения функций (интерфейса). Это сокрытие и есть постулат ООП
Sergey
один из них
Anonymous
Супер!
Anonymous
теперь все понял, спасибо за пример
Sergey
👍
Константин
Приветствую, коллеги подскажите, как получить URL, по которому переходил пользователь, до того момента как его поймал фильтр авторизации? Redirect::intended() передает уже сформированный html, а если задача получить именно путь изначального перехода строкой, то как быть?
Dmitriy
Centralised Logging System for Laravel in an ElasticStack https://www.youtube.com/watch?v=2DL1c9k67og
Dmitriy
Слайды https://github.com/mewm/laravel-elastic-stack-cls-docker
Wolf
Привет всем. Кто-то делал карусель рулетку на js?
invariance
Привет, а ты умеешь читать?
invariance
вдруг заметишь, что это чат не по js
Anonymous
вдруг заметишь, что это чат не по js
ларавел - это же js плаин для реакта, который на ангуляр сделан
invariance
Ой, сорян, перепутал
Bakhriddin
kto polzuyetsya phpstorm 2016.2
Anonymous
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
вдруг заметишь, что это чат не по js
Забавно. Я был уверен, что написал в канал по js) Сорян)
J
подскажите для Лары 5.3 какой-нить красивый генератор документации? надо на route + Controller
Алексей
Читаемый код, лучше любой доки
J
да код-то читаемый
J
но хотелось бы на АПИ сгенерить красивый док
Алексей
Swagerwell только приходит на ум
Алексей
Дока хорошая но изначально трудно вникнуть )
Алексей
Инфиум поди кинешь?)
Pin
нет
Pin
https://github.com/dingo/blueprint
Pin
если юзаешь dingo api в качестве api
Anonymous
В ларе есть какая-то встроенная функция которая будет вызывать исключение если переданное значение не является истиной ? типа assert но для продакшена
Anonymous
оО
Dmitriy
чет я не понял
Anonymous
в общем задача такая , надо провалидировать данные входные (приходят они не через Request) внутри одного процесса надо генерить исключение если утверждение является ложью то есть по сути можно сделать типа так if ($a === false) throw new Exception('А =! true'); но хочется как то красивее сделать. есть мысли?
Anonymous
ну сделай валидатор
Anonymous
и валидируй
Andrey
Bon ты же в Валидатор первым аргументом передаешь значения, вторым условия, третим текст ошибок, если требуется
Andrey
что мешает использовать? :)
Anonymous
и валидируй
Привет, у тeбя нет случайно списка городов израиля в xml?
Anonymous
csv
Anonymous
csv
а города на русском?
Anonymous
на иврите
Anonymous
печаль(
Anonymous
из втентакле спарси на русском
Anonymous
Вот кстати xml https://data.gov.il/dataset/d2581732-eca4-4988-b986-df8e791a1d60/resource/4bc8ec43-08dd-4dc3-a6ab-bd52e137fb8c/download/rechovot20161101.xml
J
есть вопрос, делаю из Лары return response()->json([ 'state' => false ]); и получаю это в Андроид приложении, но JSONObject не хочет принимать false без кавычек вопрос: как можно объяснить Ларе брать в кавычки Boolean ?
Алексей
state = $state? 'true' : 'false'; 😁
J
щас получаю: { "state": false, "msg": "password mismatch" } а надо чтобы стало: { "state": "false", "msg": "password mismatch" }
Anonymous
ну епт
Anonymous
так и передавай 'state' => "false"
J
спасибо!
J
но это ж костыльно :)
J
хотя и креативно :)
Anonymous
это очевидно
Anonymous
можешь сделать красиво
Anonymous
свой APIResponse, который будет true/false в стринг переделывать
J
а теперь таже проблема, но с null
J
блин
J
это ж не кошерно
Anonymous
100% в твоем JsonOBject проблема
Anonymous
выкинь его
J
не могу - он в Ведроиде :)
Anonymous
или научи понимать нормальный жсон
J
отож, я ж вижу что это валидный json
J
а хавать он не хочет
Евгений
можно как то отвалидировать значение boolean or date_format:H:i ?
Sergey
в одном параметре может быть или бул или дата?
(;¬_¬)
ну видимо да, а почему нет?
Sergey
Плохо
Sergey
проблем от этого делать. Если булеан означает отсутствие даты, то null его сделать