Joomla връзка към външна база данни

Ако имате нужда от достъп таблиците в базата данни на разширения Joomla можете просто да използвате JFactory-> метод getDBO () Той използва вече установена връзка, какво Joomla използва, за да се свърже с базата данни.

Сега променливата $ DB - това е обект от тип JDatabase и ние може да произвежда необходимите действия към базата данни, използвайки техниките, включени в нейния интерфейс: JDatabase клас.

Но какво, ако трябва да се работи с друга база данни. различен от този, който предписва по време на инсталацията и е посочен в конфигурационния файл? Или разширението си използва множество бази данни (това се случва понякога), с по различни гостоприемници и различни представки. Или може би трябва да се работи изобщо с различни шофьори? След това е необходимо универсално чудотворни глупости! Само днес! Според невероятно ниска цена! Общо 999.99. - шега :)! Вие ще трябва да се използва метод JDatabase-> getInstance ()

Сега променливата $ DB - тя отново се противопостави тип JDatabase с всички последствия. Имайте предвид, че ако базата данни използва нестандартен номер на порт, можете да укажете на пристанището, като я добавите към края на името на хоста. Например, ако MySQL работи на порт 3307 (порт по подразбиране 3306), в този случай, името на хоста може да приеме формата на "db.myhost.com: 3307".

Една от характеристиките на използване JDatabase-> getInstance (). Тя е, че ако се опитате да създадете друга връзка обект със същите параметри, като някои вече е създаден обект преди - тя ще се върне по-рано създадения обект, а не се създаде нова. Това е JDatabase-> getInstance () - изпълнява Singlton идея, обаче, че това не се е случило, параметрите трябва да съвпадат точно. Например, ако двама са отправени искания за използване JDatabase-> getInstance (), за първи път, използвайки името на хоста "db.myhost.com", а вторият чрез "db.myhost.com: 3306", а след това ще генерира два различни обекти въпреки че порт 3306 е пристанище на MySQL по подразбиране, и това е логично едно и също. Аз не съм бране си суров, но изглежда, че има глупаво параметри се сравняват като струни.

Ако се налага да използвате JModel с навигация между страниците и т.н. и т.н. И трябва да се заемем с работата си модели с новата си връзка, а не със съединение подразбиране. Това ще изисква използването JDatabase-> метод setDbo (). Всъщност трябва да се замени JModel дизайнер във вашия модел файл, както следва:

Voila - вече използва модела, за да й се изплъзне на нова връзка.