Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 59

Как вызывать методы класса по перебору массива с именами методов

01.04.2017, 11:46. Показов 611. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сабж... Вот код:
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
class CApplication {
 
    public static function actionIndex() {
        echo "Main!";
    }
 
    public static function actionContact() {
        echo "Contact!";
    }
 
}
 
$i = 'main';
 
$CApp = [
    'main' => 'actionIndex',
    'contact' => 'actionContact'
];
 
foreach ($CApp as $k => $v) {
    if ($k == $i) {
        call_user_method($v, CApplication);
    }
}
Есть массив $CApp имен методов класса CApplication. Через переменную $i выбираем имя.
Делал так через временную переменную $object:
PHP
1
2
3
4
5
6
7
$object = CApplication;
 
foreach ($CApp as $k => $v) {
    if ($k == $i) {
        call_user_method($v, $object);
    }
}
Все равно не работает. В чем проблема не пойму...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2017, 11:46
Ответы с готовыми решениями:

Как из метода созданного класса вызывать методы WindowsForms (наприме вывод текста в TextBox)
Помогите пожалуйста! Я изучаю С# и надеюсь на вашу помощь... В общем создаю класс в методах этого класса хочу вывести с помощью TextBox...

Методы вызываются через указатель на объект класса; Как компилятор определяет, какой из методов надо вызвать?
Ребята, если вникать, то вообще ничё непонятно. Вот смотрите: пусть у нас есть абстрактный класс abstr (abstr.h) и в нём определено,...

Как вызывать методы в C#?
Как вызвать метод а(), который содержит 4 аргумента? class Program { static void Main(string args) { ...

3
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
01.04.2017, 11:57
PHP
1
CApplication::{$CApp[$i]}();
1
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 59
01.04.2017, 12:03  [ТС]
Jewbacabra,
спасибо! можно закрывать тему
0
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
03.04.2017, 12:21
1) Функция call_user_method считается устаревшей, о чем прямым текстом написано в документации
http://php.net/manual/ru/funct... method.php

Цитата Сообщение от KimRomik Посмотреть сообщение
PHP
1
$object = CApplication;
В данном случае php воспринимает CApplication не как класс, а как константу. Если бы ты включил нотисы, то увидел бы следующую ошибку E_NOTICE Use of undefined constant CApplication - assumed 'CApplication'. Для получения названия классу стоит писать так

PHP
1
$object = CApplication::class;
Но конкретно функция call_user_method не работает с названием класса, ей нужен объект, который можно создать так

PHP
1
$object = new CApplication();
Весь код выглядел бы так

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
class CApplication {
 
    public static function actionIndex() {
        echo "Main!";
    }
 
    public static function actionContact() {
        echo "Contact!";
    }
 
}
 
$i = 'main';
 
$CApp = [
    'main' => 'actionIndex',
    'contact' => 'actionContact'
];
 
$object = new CApplication();
 
foreach ($CApp as $k => $v) {
    if ($k == $i) {
        call_user_method($v, $object);
    }
}
И тогда бы твоя логика работала.

Но вариант Jewbacabra, конечно, намного лучше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2017, 12:21
Помогаю со студенческими работами здесь

Разработать соответствующие методы класса с использованием параметров методов ref, out, params
Дано целое число F. Разработать метод, который возвращает массив, состоящий из цифр этого числа, а также сумму первой и последней его цифр.

Как вызывать методы из нативных либ?
Есть "программа" и есть кучка DLL и TLB. API этой "программы". "Программа" только под windows. Для .NET авторы "программы"...

Как вызывать методы C# ASP.NET Core в JS?
Как вызывать методы C# ASP.NET Core в JS?

Как называются методы, которые можно вызывать на любых обьектах?
5 клас 2-ая четверть. Методы Как называются методы, которые можно вызывать на любых обьектах. <object>.PlusDvaAndWriteLn();

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru