X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Какое объявление переменной для вызова функции из класса правильное?
ThomasK
ThomasK
Topic Starter сообщение 9.4.2011, 6:37; Ответить: ThomasK
Сообщение #1


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

Вариант 1.
a.php:
[PHP]include('b.php');

class a {
function a1 {
global $b;

$val = $b->b1($p);
...
}
};

$a = new a;[/PHP]

Вариант 2.
a.php:
[PHP]include('b.php');

class a {
function a1 {
$b = new a;

$val = $b->b1($p);
...
}
};

$a = new a;[/PHP]


b.php:
[PHP]class b {
function b1 {
...
}
};

$b = new b;[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 9.4.2011, 23:04; Ответить: Mulder_hb
Сообщение #2


Первый вариант отпадает сразу. Во-втором смешались в кучу кони-люди... Зачем в b.php создавать объект? В a::a1(), наверное, создавать надо объект класса b?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThomasK
ThomasK
Topic Starter сообщение 10.4.2011, 14:33; Ответить: ThomasK
Сообщение #3


(Mulder_hb @ 10.4.2011, 02:04) *
В a::a1(), наверное, создавать надо объект класса b?

Согласен на счет
[PHP]$b = new a;[/PHP]
это ошибка. Не заметил ее :rolleyes:. Надо
[PHP]$b = new b;[/PHP]

(Mulder_hb @ 10.4.2011, 02:04) *
Зачем в b.php создавать объект?

Объект создается только для работы первого варианта и для вызовов функций вне классов. Утверждать, что это правильно не могу, но это работает.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 10.4.2011, 16:36; Ответить: Witu
Сообщение #4


ThomasK, тогда уж class a extends b {}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThomasK
ThomasK
Topic Starter сообщение 10.4.2011, 17:50; Ответить: ThomasK
Сообщение #5


HTMLandPHP, по моему это не тот случай. Как быть, если необходимо обратиться к функции(ям) класса b из классов c, d и т.д., или из кода вне класса?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 10.4.2011, 19:12; Ответить: Witu
Сообщение #6


если эта функция используется в большинстве классов то может не нужно её вносить в класс а описать отдельно?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThomasK
ThomasK
Topic Starter сообщение 10.4.2011, 20:03; Ответить: ThomasK
Сообщение #7


Такой вариант не исключается, но суть вопроса не в этом. Хотел узнать мнением других - стоит ли использовать глобальные переменные в классах?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 10.4.2011, 20:45; Ответить: Witu
Сообщение #8


а почему нет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 10.4.2011, 20:54; Ответить: alexdrob
Сообщение #9


(HTMLandPHP @ 10.4.2011, 23:45) *
а почему нет?

Ну так как бы принцип ООП отделить от глобальных переменных и сделать классы не зависимыми. Если юзать глобальные переменные в классе, зачем вообще классы использовать?

Зависит от функции, либо делать класс с общими функциями и делать наследование, либо делать статик функции.
Но вообще как по первому примеру я понял, вам нужно использовать синглтоны
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThomasK
ThomasK
Topic Starter сообщение 11.4.2011, 16:18; Ответить: ThomasK
Сообщение #10


(alexdrob @ 10.4.2011, 23:54) *
Зависит от функции, либо делать класс с общими функциями и делать наследование, либо делать статик функции.
Но вообще как по первому примеру я понял, вам нужно использовать синглтоны

Спасибо за подсказку. Почитать статьи про синглтоны - скорей всего это и есть то, что надо. Теперь надо в этом убедиться на практики.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Посоветуйте массажер для спины и шеи
11 Boymaster 918 Сегодня, 18:24
автор: Arsenwenger
Горячая тема (нет новых ответов) ⭕Антидетект браузер AdsPower для эффективной работы с мультиаккаунтами!
84 AdsPower 24570 Сегодня, 16:35
автор: AdsPower
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
55 arendator 35103 Сегодня, 2:12
автор: arendator
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
3 Rebex 972 Вчера, 20:50
автор: Rebex
Открытая тема (нет новых ответов) Обучение Email Рассылкам + Софт Для Автоматизации (100к в сутки с сервера)
10 zennoboss 4664 Вчера, 5:20
автор: Skyworker


 



RSS Текстовая версия Сейчас: 25.4.2024, 19:43
Дизайн