P.S. Сейчас продолжаю тестить этот способ и столкнулся с тем что я не могу обратиться из файла к подключению mysql. Получается что не возвращает подключение.
Ну так вы же "спрятали" обе функции внутрь класса SqlDB, и теперь они находятся в его области видимости. Теперь для работы с этими функциями, веренее - уже методами, вам надо создать экземпляр класса SqlDB, и обращаться уже к объекту. Примерно так:
Проверьте версию пхп. Она должна быть не ниже 5.4. Если версия ниже, и нет возможности её поднять, тогда замените строку с сокращённым синтаксисом объявления массива на этот вариант:
На сколько я понял тут задаётся имя базы, но я его так же получаю из файла
Строго говоря, в функцию conn() передаётся имя файла, которое должно совпадать с именем базы данных, к которой вам необходимо произвести подключение.
Чтобы долго не ходить вокруг да около, то можно сказать так - этот код позволит вам использовать одновременное подключение к разным бд. Для этого вам нужно создать соответствующие пхп-файлы, по аналогии с приведённым примером (т.е., чтобы файл возвращал ассоциативный массив значений), и просто вызывать одну и ту же функцию, но передавая в неё разные параметры. См. пример:
Нет, возвращается объект mysqli (если в процедурном - то это был бы тип "ресурс"), с которым вы будет производить дальнейшие операции (выборка из базы, и т.п.).
ЧИМ пишет:
Вот это для меня вообще непонятно, это всё в классе?
Нет, создание экземпляра класса mysqli происходит в теле функции conn() при условии, что ранее этот объект не был создан.
ЧИМ пишет:
Первый раз просто сталкиваюсь с использованием extract
Эта функция, если говорить упрощённо, преобразует ассоциативный массив в переменные, при этом ключи массива становятся именами переменных, а значения массива - значениями переменных. И это всё импортируется в текущую область видимости.
ЧИМ пишет:
почему мы объявляем постоянный массив "static $conns = [];" и сразу проверяем существует ли в нём "$dbName"? Как до if(!isset($conns[$dbName])) в нём появится значение $dbName?
Поле $conns можно было бы объявить и не статичным, но тогда при каждом обращении к базе происходило бы создание объекта mysqli. Именно поэтому в условии написана проверка на его существование, ну а static будет хранить ранее сохранённые параметры.
Спасибо за участие. Готовый чат не нужен, но посмотрю, Это мне нужно чисто для обучения. Самостоятельно хочу освоить создание сайтов с нуля. Строитель
Спасибо. Может вы посоветуете какую литературу. Я долбаю одну книгу Никсон.Р Создание динамических сайтов. Все вроде понятно, а когда до дела доходит , до написания самому кода, то стопор. . Выхватываешь знания кусками безсистемно то оттуда то из другого места ,а уложить в одну стопочку не удается.
Это нормально ) Чтобы понимать теорию на этапе изучения, нужно параллельно практиковаться. Иначе говоря, читаете об операторе echo - значит надо на локальном сервере написать пример с его использованием, и пооперировать параметрами, чтобы до конца стало понятно, как он работает.
На счёт литературы - трудно что-то советовать, т.к. она устаревает ... Наверное, лучше официального мануала литературы нет. Если наткнулись при чтении на что-то не понятное, можно нагуглить видео по этому моменту. Но читать придётся много, настраивайтесь
Вы имеете ввиду отправка/чтение сообщений без регистрации? Если да, то вам нужен скрипт "Гостевая книга". Приведённого кода мало для её реализации. Как минимум нужна ещё html-форма.
Спасибо учту
документация же не научит так как уроки
Почему нет? В документации не только описывается та или иная возможность, но так же есть и рабочие примеры, которые можно скопировать на ваш локальный сервер для практических занятий.
Уроки потому что устарели. Меньше полагайтесь на уроки, а лучше больше читайте документацию. Как раз сейчас у вас возникла необходимость прочесть об использовании парных/непарных кавычек: одинарные кавычки двойные кавычки
А как теперь в этот класс подключить файл connect.php? Чтоб не загружать 2 файла по отдельности, а загрузить один класс который будет подключаться к БД используя файл настроек.
Можно передать ссылку на файл в конструктор дочернего класса, в дочернем конструкторе произвести подключение этого файла, и после этого вызывать родительский конструктор, в который и передавать данные для соединения с БД