sonicsonic1
26.02.2014 - 19:18
Доброе время суток.
Есть 3 страницы : index.php login.php signup.php т.е можно либо зарегистрироваться либо залогиниться. Вся инфа в бд. Всё работает,пока я не узнал ,что делать в каждом файле новое подключение к бд это не хорошо.(в пхп недавно) А лучше вообще использовать паттерн Singleton и тем самым создавать единственное подключение.Класс описал(использовал PDO для mysql)
Создаю единственный объект с подключением к бд в index.php и всё отлично работает,но ВОПРОС: а как мне получить этот объект в 2-ух других файлах ? Ну или как вообще делается авторизация и регистрация "по уму" ?
AllesKlar
26.02.2014 - 19:24
Цитата |
а как мне получить этот объект в 2-ух других файлах |
Так же, как и в первом файле.
Реклюдишь файл с классом, создаешь объект класса.
Т.к. это у тебя сингльтон, то, если инстансе класса уже есть, то оно и вернется, второй создан не будет.
Цитата |
Ну или как вообще делается авторизация и регистрация "по уму" ? |
Тут таких тем уже уйма. Посмотри на форуме готовые решения, логику там поймешь, и под себя сделаешь.
_____________
[продано копирайтерам]
sonicsonic1
26.02.2014 - 19:26
спасибо за ответ
dr.nomore
27.02.2014 - 16:13
Цитата (sonicsonic1 @ 26.02.2014 - 19:18) |
Создаю единственный объект с подключением к бд в index.php и всё отлично работает,но ВОПРОС: а как мне получить этот объект в 2-ух других файлах ? Ну или как вообще делается авторизация и регистрация "по уму" ? |
Смотря куда вставляются ваши login.php и signup.php. Если в индекс то коннект в них и так есть, куда ему деваться, из индекса распространится.
Если безындексная система, то есть login.php и signup.php вызываются директом, то каждому придется сделать свой коннект, иначе его взять неоткуда.
Синлетон не нужен. Наверняка есть какой-то конфиг - в него и воткните коннект пропертью. Если проперть null сделайте коннект и в дальнейшем с этой проперти его берите, потому что она уже не null.
То есть делается обычно, без мракобесной статики:
if(!$this->link)
$this->link = new CConnect(new CConnectOptions) // например
return $this->link;
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.