Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Андрюшатина
80 / 59 / 47
Регистрация: 27.11.2014
Сообщений: 359

Передать аргумент метода через аргумент другого метода

05.10.2017, 21:01. Показов 1403. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Простой пример того, что хочу сделать.

Есть массив констант в классе А. Каждое значение константы это id товара в БД.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class А
{
    const А1 = 1;
    const А2 = 2;
 
  // делаю из констант массив
    public static function getConstants() {
        $oClass = new А(__CLASS__);
        return $oClass->getConstants();
    }
  //тут получаю товары по ID из БД
     public static function getProductName($id)
    {
        return self::findOne($id)->name;
 
     }
}
Теперь в другом классе (Класс B) хочу сделать вывод товаров по переданному в аргументе ID. То что пытаюсь реализовать ниже, но что-то не получается.
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
class B
{
//загнул в аргумент массив констант
    public  function productIdByConst($const = ' ')
    {
        $gotConst = А::getConstants($const);
    }
//тут пытаюсь получить из массива констант название товара по номеру константы
    public function  productNameByConst($variabl = ' ')
    {
        $fromTblProduct = new А();
        $getConst = B::productIdByConst();
        $getIdToName = $fromTblProduct::getProductName($getConst);
        return $getIdToName = $variabl;
    }
 private function getData()
    {
                    $article = new С([
//а тут полный ступор, как мне из одного аргумента метода, передать параметры другого аргумента метода и вывести их.
                    'category' => .........................,
                    'ID' => '.......................',
                ]);
      }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2017, 21:01
Ответы с готовыми решениями:

Передать объект класса как аргумент метода в поток
Имеется класс npimono, код использования: private void loadListButton_Click(object sender, EventArgs e) { ...

Аргумент метода forEach
Здравствуйте. Помогите пожалуйста понять, что происходить в этой строчке. this.dataSource.getData().forEach(p =>...

Аргумент метода с модификатором final
В чем принципиальное отличие между данными методами? void doSomth(final User user) {} void doSomth(User user) {}

17
06.10.2017, 14:30

Не по теме:

аццкая лапша

0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
06.10.2017, 14:57
Не совсем понял, что нужно, но хранить id товаров в константах - это жесть...
0
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
07.10.2017, 14:45
Цитата Сообщение от Зверушь Посмотреть сообщение
Не совсем понял, что нужно, но хранить id товаров в константах - это жесть...
Да не, это как раз норм. Где же их ещё хранить?
0
07.10.2017, 15:58

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
Да не, это как раз норм. Где же их ещё хранить?
В бд, естественно.

0
07.10.2017, 17:15

Не по теме:

Цитата Сообщение от pav1uxa Посмотреть сообщение
В бд, естественно.
Это само собой. Но должна же быть какая-то связь между бд и кодом. Константы в классах/интерфейсах как раз вполне для этого подходят.

0
07.10.2017, 17:34

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
Это само собой. Но должна же быть какая-то связь между бд и кодом. Константы в классах/интерфейсах как раз вполне для этого подходят.
Товар это такая вещь, его можно убрать, его можно добавить. Для этого и делаются cms. Чтобы все можно было сделать автоматически, через интерфейс сайта, не залезая в код. Вы же не в ручную в коде будете его прописывать каждый раз при добавлении?

0
07.10.2017, 20:02

Не по теме:

Цитата Сообщение от pav1uxa Посмотреть сообщение
Товар это такая вещь, его можно убрать, его можно добавить. Для этого и делаются cms. Чтобы все можно было сделать автоматически, через интерфейс сайта, не залезая в код. Вы же не в ручную в коде будете его прописывать каждый раз при добавлении?
Товары бывают разные. У некоторых довольно кастомная логика, принципиально отличающаяся от логики других товаров. И да,
их приходится отдельно в коде описывать. У меня встречались товары, для описания которых приходилось по 20 классов писать

0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.10.2017, 20:57
andr-xw, тогда уж в конфиг выносить ид, иначе пиидется следить чтобы во всех окружениях в бд совпадали эти ид
0
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
07.10.2017, 23:12
Jewbacabra, в таких случаях использую UUID вместо обычного инкрементного id. И далее синхронизируются при помощи миграций или конфигов. И можно из конфигов генерить классы/интерфейсы с константами, для более удобной работы с кодом.
0
08.10.2017, 09:10

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
Товары бывают разные. У некоторых довольно кастомная логика, принципиально отличающаяся от логики других товаров.ь
Причем тут логика, мы вроде про ID говорим?

Это уже отдельно свойство (поле таблицы) - тип товара. Или добавлять логику признаками (флажками). Или как хотите называйте. Тоже указывается при добавлении/изменении. Даже если он один с таким типом на всю базу - это неправильно писать его ID прямо в коде.
Цитата Сообщение от andr-xw Посмотреть сообщение
И да, их приходится отдельно в коде описывать. У меня встречались товары, для описания которых приходилось по 20 классов писать
Опять же, к ID никакого отношения не имеет.

0
08.10.2017, 14:17

Не по теме:

Ok, bro, предположим, ты ввел колонку "тип", содержащую внешний ключ на таблицу `type`, в которой описаны типы товаров. Типы, кстати, тоже можно из админки создавать и редактировать. Однако в зависимости от типа, мы должны закодить отдельную логику. И вот мы снова возвращаемся к исходной задаче - обращению к ID из кода.

0
08.10.2017, 14:27

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
И вот мы снова возвращаемся к исходной задаче - обращению к ID из кода.
Как правило типы меняются гораздо реже чем товары, их меньше и далеко не всегда нужно их создание

0
08.10.2017, 20:04

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
Ok, bro, предположим, ты ввел колонку "тип", содержащую внешний ключ на таблицу `type`, в которой описаны типы товаров.
Нет я не вводил никаких внешних ключей и таблиц, это Вы уже придумали.
Цитата Сообщение от andr-xw Посмотреть сообщение
Типы, кстати, тоже можно из админки создавать и редактировать.
Каким образом Вы в админке собрались описать логику товара?
Цитата Сообщение от andr-xw Посмотреть сообщение
И вот мы снова возвращаемся к исходной задаче - обращению к ID из кода.
Не знаю куда Вы там возвращаетесь. Я даже в Вашем потоке сознания не уловил связи с ID.

0
09.10.2017, 02:59

Не по теме:

Цитата Сообщение от pav1uxa Посмотреть сообщение
Нет я не вводил никаких внешних ключей и таблиц, это Вы уже придумали.
Я усложнил задачу. Не все же хелоу ворлды писать)

Цитата Сообщение от pav1uxa Посмотреть сообщение
Не знаю куда Вы там возвращаетесь. Я даже в Вашем потоке сознания не уловил связи с ID.
Ок. Видимо твое время ещё не пришло.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
Как правило типы меняются гораздо реже чем товары, их меньше и далеко не всегда нужно их создание
Это ничего не меняет. Бывают магазины с 10 товарами, а бывают cо 100 типами товаров. Суть задачи остается прежней.

0
09.10.2017, 17:51

Не по теме:

Цитата Сообщение от andr-xw Посмотреть сообщение
Я усложнил задачу. Не все же хелоу ворлды писать)
Странно Вы о костылях отзываетесь.
Цитата Сообщение от andr-xw Посмотреть сообщение
Ок. Видимо твое время ещё не пришло.
Ну да, не всем дано ID товара из БД прописывать в код жестко...

0
09.10.2017, 18:03

Не по теме:

Цитата Сообщение от pav1uxa Посмотреть сообщение
Странно Вы о костылях отзываетесь.

Ну да, не всем дано ID товара из БД прописывать в код жестко...
Когда тебе придет задача, в которой нужно будет сделать так, тогда ты меня поймешь))

0
 Аватар для otto-fukin
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
10.10.2017, 23:09
пипец. расстрелы конечно отменены.. ну и правильно. не убивать же, но лечить срочно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2017, 23:09
Помогаю со студенческими работами здесь

Класс как аргумент своего же метода
В примере ниже происходит лишний (по замыслу не нужный) вызов деструктора. Вопрос в следующем: как в методе класса в качестве аргумента...

Как изменить аргумент метода в откомпилированной программе?
Добрый день. Как пример, есть такая программа: ... static void Main(string args) { ...

Можно ли записать в аргумент метода, другой метод?
Доброго времени суток. Вопрос заключается в том, можно ли в аргументы метода записать метод типа double? Конкретно. У меня есть метод...

Функция как аргумент шаблонного метода класса
Пытаюсь передать функцию для сравнения в сортировке слиянием, но что-то не получается. Подскажите, как исправить этот код, чтобы сортировка...

И снова ни одна из перегрузок метода не принимает 1 аргумент!
Всем доброго времени. Нашел на форуме несколько аналогичных тем, но увы и ах... Немного не в тему. В общем помогите найти ошибку или...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru