Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/46: Рейтинг темы: голосов - 46, средняя оценка - 4.50
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

Использование класса в другом классе

06.05.2012, 15:34. Показов 8833. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
к примеру у меня есть класс
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Class_Settings{
function test(){
  .. тут вытягиваются переменные из базы ...
  return array( .. эти переменные ..)
  }
}
$class_settings=new Class_Settings;
 
class Class_Work{
function work(){
 $this->settings=$class_settings->test();
 .....
 }
}
мне нужно применить переменные класса Settings в классе Work но мне пишет

HTML5
1
Call to a member function test() on a non-object
как это правильно использовать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2012, 15:34
Ответы с готовыми решениями:

получение объекта в другом классе и его использование
Здравствуйте, не давно изучаю php, и столкнулся с такой проблемой: Допустим есть класс Request и у него есть метод getHello(), я...

Обьявление экземпляра класса в другом классе
Здравствуйте дорогие форумчане, не могу понять почему дочерний класс контроллера, не вызывает метод дочерного класса модуля Class...

Вызов статического метода класса в другом классе
Как вызвать статический метод из одного класса в другом? вот этот код не работает class A{ static function vivod($msg){ ...

12
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.05.2012, 15:38
Nebiros, Во-первых, переменная со строки 8 не видна внутри функции на строке 12.
Во-вторых, привязывать функционал класса в какой-то там конкретной внешней переменной - это по меньшей мере неразумно. Можно же передавать аргументы в функции, или где-то в конструкторе свойство инициализировать.
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
06.05.2012, 15:57  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Во-вторых, привязывать функционал класса в какой-то там конкретной внешней переменной - это по меньшей мере неразумно. Можно же передавать аргументы в функции, или где-то в конструкторе свойство инициализировать.
мне нужно чтобы один класс собирал все настройки которые нужны для дальнейшей работы а остальные классы использовали эти переменные (настройки) в своих функциях...

вы предлагаете просто переменные настроек сделать публичными и тогда применять в функциях других классов как простые переменные?
или как вы посоветуете сделать мною задуманное правильно?

Добавлено через 5 минут
да и как мне вообще использовать функцию одного класса в другом?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.05.2012, 16:54
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Settings {
    ...
}
 
class Foo {
    protected $settings;
    public function __construct(Settings $settings) {
        $this->settings = $settings;
    }
    public function bar() {
        // $this->settings ...
    }
}
 
$settings = new Settings();
$foo1 = new Foo($settings);
$foo1->bar();
...
$foo2 = new Foo($settings);
$foo2->bar();
1
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
06.05.2012, 19:33
как по мне проще сделать клас настроек синглтоном и не возится с переменными и передачей в конструкторы
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.05.2012, 19:46
caballero, А если у разных классов разные настройки (разные по значениям параметров)? А если у разных классов разного рода настройки (с разным набором параметров).
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
06.05.2012, 22:52
так пусть каждый класс берет свои - передача класа настроек параметром тут не помогает
обычно настройки идут к приложению и не к классу (даже не представляю себе такое количество настроек чтобы на каждый клас свой набор)
класс обращается к объекту содержащему настройки и читает что ему надо
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
07.05.2012, 07:07
caballero, На самом деле ситуации разные могут быть. Может, у нас будет 7 табуреток с одними настройками и 2 табуретки с другими настройками, а также кирпичи все с одинаковыми настройками и шкафы с индивидуаотными настройками каждый. В конце концов, при необходимости можно же и от настроек унаследовать дочерние классы c определенными отличиями.

В общем, спорить можно долго и бессмысленно. Все зависит от конкретной ситуации. Где-то лапша длинная, где-то короткая.
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
07.05.2012, 13:13
В общем, спорить можно долго и бессмысленно. Все зависит от конкретной ситуации.
а не надо спорить
просто представьте юзера котрому на сайте надо настроить стопицот конфиг файлов или типа того
0
 Аватар для resource2008
111 / 112 / 18
Регистрация: 11.03.2011
Сообщений: 421
01.07.2012, 22:16
Цитата Сообщение от caballero Посмотреть сообщение
класс обращается к объекту содержащему настройки и читает что ему надо
с другой стороны, многие разработчики считают такой подход плохим тоном.

вы приходите в магазин, берете нужный товар, на кассе с Вас просят 200руб.
Вы же не даете кассиру свой кошелек со словами "Возьми сколько тебе надо"?
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
02.07.2012, 00:19
с другой стороны, многие разработчики считают такой подход плохим тоном.
вы имеете ввиду индусов которые на каждую строку конфига напишут клас с интерфейсом и абстрактной фабрикой? Данная проблема возникла изза неудачной архитектуры, а скорее всего от того что никакой архитектуры еще нет но человек пывтается угадать все будущие проблеммы.
А посему повторяю

обычно настройки идут к приложению и не к классу
Бритва Оккама - не надо плодить сущности сверх необходимого. В данном случае не надо придумывать фантастическую ситуацию где каждый класс имеет свои настройки. Юзер такую прогу выкинет фтопку вместе с програмистом.

Вы же не даете кассиру свой кошелек со словами "Возьми сколько тебе надо"?
я даю ему кредитку с которой он снимает сколько надо. 21 век однако.
0
 Аватар для resource2008
111 / 112 / 18
Регистрация: 11.03.2011
Сообщений: 421
02.07.2012, 11:32
Цитата Сообщение от Nebiros Посмотреть сообщение
function work()
PHP
1
function work($class_settings)
и при вызове метода настройки в него параметром.

Цитата Сообщение от caballero Посмотреть сообщение
Бритва Оккама - не надо плодить сущности сверх необходимого
а в каком месте я сказал, что надо их плодить? основная идея не передавать "туда" то, что "там" в принципе не нужно и чего "там" быть по идее как бы и не должно. опять таки, вы же не отдаете продавцу кошелек с десятком кредиток, а выбираете одну, например ту, по которой у вас минимальна комиссия.

я бы, например, создал несколько методов, каждый из которых вернет/изменит только те настройки, которые относятся к конкретному модулю программы.
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
02.07.2012, 13:31
я бы, например, создал несколько методов, каждый из которых вернет/изменит только те настройки, которые относятся к конкретному модулю программы.
я и не спорю с этим
так и должно быть клас с разными методами
а чтобы достать можно было с любого места прграммы и не передавать ккакие то параметры клас нужно сделать синглетоном

хотя с методами одно неудобство - настройки как правило не скалярная величина обычно это набор параметров
поэтому самое удобное решение - клас грузит все настройки в себя и для каждого значения проcто предоставляет доступ к згидшс полю. Дешево и сердито
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2012, 13:31
Помогаю со студенческими работами здесь

Как вызвать метод класса в другом методе этого же класса?
<? class load_files{ public function traverse_hierarchy($path) { // from...

Наследование класса от класса в другом каталоге
Здравствуйте! Подскажите пожалуйста по такому вопросу: Мне нужно создать абстрактный класс путём наследования класса расположенного в...

Использование переменных в классе
как осуществить это действие? есть класс, в котором метод, подключающийся к базе и достающий что то из нее. как мне объявить эти...

Использование функции класса внутри другого класса
И снова к нашим баранам.. Я задавал подобный вопрос, но тут возникла такая трабла: есть класс, который подключается извне //подключаем...

Вызов класса в классе (Правильно ли?)
Здравствуйте. Есть класс db в отдельном файле и в другом каталоге. Мне необходимо пользоваться функциями класса db в другом классе из...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru