Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
1

Как задать разные параметры для одного метода интерфейса

09.06.2017, 12:06. Показов 496. Ответов 3
Метки нет (Все метки)

Есть 4 события: гол, удаление, буллит и время вратаря.

Все эти события реализуют один интерфейс

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
namespace App\Business\Interfaces;
 
 
Interface IDataEvent{
 
    /**
     * Метод создает новое событие, для каждого события должен быть свой набор параметров
     * @return boolean
     */
    public function add();
 
}
Но для каждого из этих событий разный набор параметров. Например, для времени вратарей это время, вратарь команды А и вратарь команды Б. А для буллита это игрок который бил буллит, вратарь, забит ли буллит, является ли победным буллит.

Но для всех методов должен быть один обязательный параметр $game_id.

Как такое реализуется?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2017, 12:06
Ответы с готовыми решениями:

ListBox - как задать DisplayMemberPath для элементов входящих в ListBox, если они разные, а не одного класса?
ListBox - как задать DisplayMemberPath для каждого из типов элементов входящих в ListBox? Или хотя...

Разные реализации одного интерфейса
Есть в javax.swing два класса, которые одновременно очень похожи, но в то же время и сильно...

Задать параметры метода действия
Код представления @for (int i = 0; i &lt; Model.Things.Count; i++) { &lt;tr&gt; ...

Как задать параметры для bat файла?
как задать параметры для bat файла?

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
3
Эксперт PHP
4468 / 3328 / 1085
Регистрация: 06.01.2011
Сообщений: 9,554
10.06.2017, 08:47 2
Передавайте в конструктор классов.
Интерфейс нужен для чего? Чтобы создавать ограничения вроде:
PHP
1
2
3
4
public function example(IDataEvent $event)
{
    // ...
}
чтобы быть уверенными, что получим правильный экземпляр и можем с ним безопасно работать. А если при вызове add мы не знаем, какие данные запросит метод add переданного экземпляра события, то о какой безопасности может идти речь...
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
13.06.2017, 11:51  [ТС] 3
Para bellum, не совсем понятно. Мне нужно, что бы каждый класс, который делал implement от этого интерфейса описывал метод add
0
502 bad gateway
Эксперт PHP
4519 / 3677 / 1541
Регистрация: 24.04.2014
Сообщений: 10,817
13.06.2017, 21:37 4
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
interface IDataEvent
{
    public function add(); 
}
class FooEvent implements IDataEvent
{
    private $param;
 
    public function __construct($foo_param)
    {
        $this->param = $foo_param;
    }
 
    public function add()
    {
        printf('Adding "Foo" event with parameter: "%s"'. $this->param);
    }
}
 
class BarEvent implements IDataEvent
{
    private $param1;
    private $param2;
 
    public function __construct($bar_param1, $bar_param2)
    {
        $this->param1 = $bar_param1;
        $this->param2 = $bar_param2;
    }
 
    public function add()
    {
        printf('Adding "Bar" event with parameters: "%s", "%s"'. $this->param1, $this->param2);
    }
}
 
$foo = new FooEvent('buzz');
$foo->add();
 
$bar = new BarEvent('fizz', 'fizz2');
$foo->add();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2017, 21:37

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как переопределить функцию так, чтобы она не только могла принимать разные параметры, но и возвращать тоже разные?
То есть я считаю несправедливым, если такое проканывает: void f () {;} void f (int) {;} а...

Как правильно задать параметры для процедуры в ADOCommand?
не получается задать параметры для процедуры на сервере. вроде все как надо по книжкам:...

Как задать разные шрифты для разных языков?
Как в CSS для одних и тех же блоков задать один шрифт для кириллицы, а другой шрифт для латиницы?...

Как в одном запросе задать разные условия для одной колонки ?
select , from where ( ... ) В первый раз для не нужно условие, а во второй раз нужно....

Как наложить разные текстуры на разные грани одного и того же куба?
ЗДРАВСТВУЙТЕ! Подскажите пожалуйста как наложить разные текстуры на разные грани одного и тогоже...

Как эмулировать параметры системы для одного приложения?
Допустим одно приложение собирает данные об системе, как эмулировать все параметры именно для 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.