За последние 24 часа нас посетили 16904 программиста и 1291 робот. Сейчас ищет 1491 программист ...

Куда еще проще?

Тема в разделе "PHP для профи", создана пользователем KING_PHP, 20 авг 2017.

  1. KING_PHP

    KING_PHP Активный пользователь

    С нами с:
    18 апр 2015
    Сообщения:
    154
    Симпатии:
    3
    Адрес:
    Волгоград
    Оригинальный пост:
    Он был заброшен, и забыл, ответ был не найден. Вынужден продублировать.

    Доброго времени суток, иметься 3 класса, в которых 3 одинаковые функции Scan(). нужно пройтись по всем трем классам, если в каком-то из них есть ответ - вывести его.
    Я делаю так
    PHP:
    1. Class A{
    2. public function Scan(){
    3. return false;
    4. }
    5. }
    6. Class B{
    7. public function Scan(){
    8. return false;
    9. }
    10. }
    11. Class C{
    12. public function Scan(){
    13. $a = [false,'Нашел!'];
    14. return $a[rand(0,1)];
    15. }
    16. }
    17. //
    18. $classes = ['A','B','C'];
    19. $return = false;
    20. foreach($classes as $class){
    21.   $class = new $class();
    22.   $data = $class->Scan();
    23. if($data !== false){
    24.   $return = $data;
    25. break;
    26. }
    27. }
    28. echo $return;
    А как делаете это ты?

    UPD: Так-же работает такой вариант:
    PHP:
    1. ...
    2. $classes = [new A(),new B(),new C()];//LOOOL
    3. ...
     
    #1 KING_PHP, 20 авг 2017
    Последнее редактирование: 20 авг 2017
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    [​IMG]
    --- Добавлено ---
    Я бы еще понял 3 объекта одного класса, но 3 класса...
     
  3. KING_PHP

    KING_PHP Активный пользователь

    С нами с:
    18 апр 2015
    Сообщения:
    154
    Симпатии:
    3
    Адрес:
    Волгоград
    окей, куча
    PHP:
    1. if() {} elseif(){}
    по твоему лучше?
     
  4. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @KING_PHP бред сама задача, хотя решение можно сократить, зная встроенные php функции
    PHP:
    1. $result = array_filter(['A', 'B', 'C'], function ($c) {
    2.     return (bool)(new $c)->scan();
    3. });