Php PDO база данни singleton
Как да `kosherly` реализираме достъп до базата данни, така че всеки път, когато се осъществи достъп, да не се създава нова връзка? Виждам два варианта. Първата реализация като тази: 1. файл Database.php
2. условно файл index.php
вторият е да внедрите класа Database като singleton.
Кажете ми кой пише на php от дълго време. Вярно ли е, че при използване на първата опция няма постоянно да се установява нова връзка. И ако се имплементира чрез сингълтон, как „кошер“ да го направите с помощта на PDO. Е, или има друга надеждна и проста опция. Благодаря ти.
Според първия вариант: 1. Защо класът Database е необходим тук? 2. Ще имате ли само един клас в цялото приложение? или по? И колко връзки ще има след нов myclass и нов myclass2?
На второто. Високите вежди не харесват единични. Нещо му пречи да тества там. Плюс религиозна нетолерантност. Така че използвайте само статичен сингълтон, ако вашият код е организиран в класически процедурен код.
Ако имате всичко под формата на кошерна йерархия на класове, тогава, както е отбелязано в друг отговор,предайтевръзката към класа и не я създавайте всеки път наново.
FanatPHP: С този подход изглежда изключително изгодно в сравнение със същия контейнер, използван в symfony 2. в повечето случаи наистина се нуждаем от един екземпляр. И ние работим с конкретен клас, а не с някакъв низ ключ.
В първия случай това са почти глобални променливи с всички последствия.
>mysql и сфинкс. FanatPHP: Това са напълно различни връзки. Няма значение, че вероятно ще използвате същия драйвер някъде на ниско ниво по отношение на производителносттас тях това са две напълно различни единици: DBConnection, SphinxConnection. Тъй като те изпълняват напълно различни функции.
> главен и подчинен Е, на ниво приложение, като цяло е странно за прилагане. Или клъстер, или отделна услуга, която ще реализира избор на връзка, трябва да помисли за това. Но ако все пак трябва да го внедрите в приложението, тогава внедрете клас, който ще върне вече подготвен екземпляр на необходимата връзка:
FanatPHP: Доколкото те разбирам, предлагаш следното: