С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100

Как лучше всего сделать объект видимым глобально?

22.07.2018, 13:18. Показов 1828. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Иногда, нам нужно иметь переменную или объект доступный из любого места.

Например, соединение с БД.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$mysqli = new mysqli($hostname, $username, $password, $base_name);
 
//Используем mysqli ниже
 
//Тут область видимости значения не имеет
$mysqli_result=$mysqli->query("SELECT * FROM `data`");
 
 
//А тут, разумеется, объект не виден
function test()
{
$mysqli_result=$mysqli->query("SELECT * FROM `data`");
}
 
 
//А тут уже виден
function test1()
{
global $mysqli;
$mysqli_result=$mysqli->query("SELECT * FROM `data`");
}

Могу ли я сделать как то так?
PHP
1
global $mysqli = new mysqli($hostname, $username, $password, $base_name);
Один раз указать, что этот объект всегда должен быть виден глобально.

А далее
PHP
1
2
3
4
function test()
{
$mysqli_result=$mysqli->query("SELECT * FROM `data`");
}
И он будет виден в любой функции.

Обычно в программировании так и делается. Вверху файла указываются переменные видимые в глобальной области, в данном файле и т.д.
Но в php, как я понял из мануала, наоборот?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2018, 13:18
Ответы с готовыми решениями:

Как лучше всего сделать авторизацию и распределение прав+защиту от несанкц. входа?
Подскажите пожалуйста, каким образом лучше всего реализовать вход пользователя в систему? Я вроде и пытался делать сессиями, с другой...

Как лучше всего сделать комментарии без капчи, но и без спама?
Здавствуйте, вообщем хочу написать свой блок комментариев для статей,все бы ничего НО Я хочу сделать это без регестрации и капчи,что...

Как лучше всего сделать сохранение >100 страниц из word шаблона с заменой ключ. слов в один word файл для посл. печати?
Я вот думаю, как? Точнее не думаю, я уже приступлю к созданию всего этого завтра, но хотел бы посоветоваться. Получается, брать...

16
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.07.2018, 13:27
Лучший ответ Сообщение было отмечено tarasalk как решение

Решение

Цитата Сообщение от useruser Посмотреть сообщение
Один раз указать, что этот объект всегда должен быть виден глобально.
Либо явно использовать global, либо доставать из суперглобального массива $GLOBALS
PS. Лучше глобальные переменные не использовать вообще, заменив их хотябы на синглтон. Идеальный вариант использовать какой-либо DI-контейнер
1
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
22.07.2018, 15:13  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Либо явно использовать global
Сейчас пишу так
PHP
1
2
3
4
5
6
7
8
9
10
function test()
{
global $mysql,$var1;
//.....
}
 
function test1()
global $mysql,$var1;
//.....
}
Немного напрягает, что в 10 функциях копипастю global $mysql,$var1; А иначе они там не видны.

Вот бы указать один раз, что $mysqi - виден везде.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
либо доставать из суперглобального массива $GLOBALS
Так что так
PHP
1
global $mysql;
что так
PHP
1
$GLOBALS["mysql"]
вроде по смыслу почти одно и тоже.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
Лучше глобальные переменные не использовать вообще
Разумеется. Но пока иду на такую жертву.

В том же паскале просто указываются объекты в public declarations, например и всё.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
22.07.2018, 15:32
Реестр. Обернутый в синглтон или обычный (статичный).
1
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
23.07.2018, 02:49
useruser, как говорил Jewbacabra, Идеальный вариант использовать какой-либо DI-контейнер
Недавно познакомился с данной технологией, полезная вещь.
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
23.07.2018, 04:09
useruser,

А вы не пробовали пользоватся автоподгрузкой класса ?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.07.2018, 06:10
D_Vik, не в этом дело. Ему объект надо глобальным сделать, а не класс подключить.
0
23.07.2018, 07:13

Не по теме:


Para bellum,

ТС явно делает что то не так...

Или я еще не проснулся (кофе).

0
23.07.2018, 07:18

Не по теме:

Что что-то не так, это да. Потому выше и советуют DI-контейнер.

0
23.07.2018, 07:24

Не по теме:


Para bellum,

Если человек задает такие вопросы , думаю для него осилить шаблон DI будет несколько затруднительно (скорее всего).

Какой нить статический пдо думаю справится с задачей )

0
23.07.2018, 21:31

Не по теме:

D_Vik, лучше пусть осиливает раньше, а то долгое употребление плохих практик дурно влияет на человека :) Лучше делать правильно сразу. Обычный синглтон очень прост для понимания ))

Кстати, дурной вопрос. А что такое DI ? )))))

0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.07.2018, 21:39
Цитата Сообщение от Зверушь Посмотреть сообщение
А что такое DI ?
https://ru.wikipedia.org/wiki/... ависимости
2
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
24.07.2018, 12:41
Цитата Сообщение от Зверушь Посмотреть сообщение
D_Vik, лучше пусть осиливает раньше, а то долгое употребление плохих практик дурно влияет на человека Лучше делать правильно сразу. Обычный синглтон очень прост для понимания ))
Если вы считаете что ошибаться это дурная практика, вы очень и очень глубоко заблуждаетесь.
Я считаю это самая полезная практика.

Нас в школе напрочь отучили ошибаться, от нас хотели сразу верный результат, без обратной стороны.
Наверное понимаете о чем я?.
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
24.07.2018, 13:04
popryduhin, все должно быть в меру. Тут советовали забить на изучение и использовать "что попроще". Именно на это я и возмутился. И еще раз прочитайте ту фразу, которую вы процитировали. Сделать акцент на слове "долгое". Если бы не это слово, я бы с вами был на 100% согласен
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
26.07.2018, 17:39
Зверушь,

Ето понятно что нужно развиватся , но чтобы осилить как работает сложное , наверное проще будет начать с понимания простого. Как только придет понимание простого , сложное уже не будет таким сложным как казалось ) Ну я могу и ошибатся естественно , можно было человека послать и какой нить Zend Framework изучать , думаю понимание пришло бы на следующий день )
0
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
26.07.2018, 17:58
Зверушь,

Мой пост относится к
Цитата Сообщение от popryduhin Посмотреть сообщение
Лучше делать правильно сразу.
Извините, ввожу в заблуждение.


Так же стоит понимать что, все советчики, в некоторой мере могли быть разочарованы в собственном опыте.
И на подсознательном уровне не дать вам испытать это же, а вдруг вы это сделаете, это микро удар по самолюбию.
Возможно вы не согласитесь с этим, но такое тоже может быть.

Следует также понимать, вокруг нас огромное количество разных людей (пессимисты, оптимисты, ...).

пессимисты - не связывайтесь с ними, напрочь отобьют все желание.
оптимисты - нормальные ребята.

Но познать грани тех и тех, мудрость.



Да, и автору поста, вам сюда https://www.youtube.com/channe... jG9CrBi6nw
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
26.07.2018, 17:58
D_Vik, конечно. Но на сколько я понял, ТС уже попробовал использовать глобальные переменные, так что чем не опыт? Вот и пора переходить на что-то посложнее. Кроме того общепринято вообще не использовать глобальные переменные так что зачем? Я считаю, что глобальные переменные - это не то, что стоит попробовать, чтобы заработать опыт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2018, 17:58
Помогаю со студенческими работами здесь

Как сделать объект класса BindingSource видимым ?
private void Form3_Load(object sender, EventArgs e) { BindingSource BindingSourse_uchastnik = new BindingSource(ds,...

Как лучше всего сделать список
День добрый, прошу помочь с маленькой деталью в курсовом(игра). Есть у меня список RMap = record Name:string; ? end; На...

Как в 1с 8.2 лучше всего сделать начисление амортизации
Как в 1с 8.2 конфигураторе лучше всего сделать начисление амортизации? при каких условиях нужно начислять амортизацию? Я планирую так,...

Подскажите как лучше всего сделать автообновление
Подскажите оптимальный алгоритм автопроверки обновления программы. Исходные данные. Имеется программа из кучи файлов, которые могут...

Как лучше всего сделать вывод данных?
Имеется часть кода.Мне нужно два столбца: первый- это название величины, второй - сама величина. Проблема в том, что код получается слишком...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru