Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
20 / 19 / 3
Регистрация: 23.09.2014
Сообщений: 285

Первый класс подключения к базе - интересно экспертное мнение

23.12.2018, 23:23. Показов 1406. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну не без ютуба конечно был написан
Все работает, просто мнение, или корректировки класса

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
class DatabaseConnection
{   
    private $link;
    
    public function __construct()
    {
        $this->connect();
    }
 
    private function connect()
    {
        if ($_SESSION['lang3'] == "") {$_SESSION['lang3'] = 'eng';}            // переменная многоязычности
        $config = require_once 'config.php';
        $dsn = 'mysql:host='.$config['host'].';dbname='.$config['db_name'].';charset='.$config['charset'];
        $this->link = new PDO($dsn, $config['username'],  $config['password']);
        return $this;
    }
 
    public function close() {
        return mysql_close($this->link);
    }
 
    public function execute($sql) 
    {
        $sth = $this->link->prepare($sql);
        return $sth->execute();
    }
 
    public function sqlSelect( $sql, $parametr, $text, $typeSelect, $l_html, $r_html )
     {
       $sth = $this->link->prepare($sql);
        $sth->execute();        
        $result = $sth->fetchAll(PDO::FETCH_OBJ);
        if($result === false){
            return [];
        }
        switch ($typeSelect)
        {
            case 'text':
                foreach($result as $data){
                    if($data != '.' && $data != '..'){
                        $arr[str_replace("Array", "", $data->$parametr)] = str_replace("Array", "", $data->$text);
                    }
                }
                return $arr;
            break;
            
            case  'options1':
                foreach($result as $data){
                    if($data != '.' && $data != '..'){
                        echo $l_html.str_replace("Array", "", $data->$text).'">'.str_replace("Array", "", $data->$text).$r_html;
                    }
                }
            break;
            
            case  'options2':
                foreach($result as $data){
                    if($data != '.' && $data != '..'){
                        echo $l_html.str_replace("Array", "", $data->$parametr).'">'.str_replace("Array", "", $data->$text).$r_html;
                    }
                }
            break;
        }
    }
}
Вся верхняя часть полностью украдена из какого-то гайда . Интересно мнение о "sqlSelect"
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2018, 23:23
Ответы с готовыми решениями:

Ребят, у меня завтра первый экзамен по программированию на Delphi 7. Интересно ваше мнение)
Здравствуйте. У меня есть список вопросов на завтрашний экзамен. Поможете, чтобы было правильно. Я программирование знаю, но чтобы не...

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

Нужно экспертное мнение по запросам
добрый день, друзья!.. нуждаюсь в экспертной оценке созданных запросов... заранее спасибо! Есть коллекция myresults с записями такого...

8
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.12.2018, 23:32
Так себе. Нужно изучать объектно ориентированное проектирование, да и в целом основы программирования.
0
20 / 19 / 3
Регистрация: 23.09.2014
Сообщений: 285
23.12.2018, 23:46  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Так себе. Нужно изучать объектно ориентированное проектирование, да и в целом основы программирования.
может поделитесь ссылкой на статьи или видео?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.12.2018, 23:50
Richik,
https://www.ozon.ru/context/detail/id/138437220/
https://www.ozon.ru/context/detail/id/2457392/
https://www.ozon.ru/context/detail/id/5648968/
1
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
24.12.2018, 14:40
Класс скорее вреден, чем полезен.
1) Зачем нужен connect, чем конструктор не угодил?
2) Зачем сессия, ее может и не быть, как например в CLI.
3) Какое отношения имеет многоязычность к БД? Совершенно разные зоны ответственности
4) return $this абсолютно не нужен.
5) Поему mysql_close, если используется PDO?
6) Метод execute() - бесполезная обертка.
7) Метод sqlSelect() - это вообще изврат полный.
$parametr -> $parametEr.
camelcase или snake_case?
html не место в классе для работы с БД
echo тут тоже не к месту.
8) У PDO полно методов, с этим классом они не доступны.
0
20 / 19 / 3
Регистрация: 23.09.2014
Сообщений: 285
24.12.2018, 22:36  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Класс скорее вреден, чем полезен.
ам...
1, 2, 4, 5 - так было в каком-то уроке
6 - через него работает "INSERT"

все что выше "sqlSelect" не мое, да и часть sqlSelect из примера

без echo не заполняются выполняющие списки

$parametr и $text - это имена полей из базы

с html может и погорячился, просто подумал коль цикл работает, зачем второй запускать при выведении результата

8 - как получить доступ?

Я понял, подключение перенесу в конструктор, "close()" сотру. "execute($sql)" надо переименовать в sqlInsert($sql)?
Как оптимизировать общую картину?

Добавлено через 20 минут
и еще, конструктор надо сделать "private"?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
24.12.2018, 23:12
Цитата Сообщение от Richik Посмотреть сообщение
1, 2, 4, 5 - так было в каком-то уроке
В интернете полно шлака.
Цитата Сообщение от Richik Посмотреть сообщение
6 - через него работает "INSERT"
Инсерт работает и без этой обертки)
Цитата Сообщение от Richik Посмотреть сообщение
без echo не заполняются выполняющие списки
Суть в том что этим не должен заниматься класс для работы с БД. Почитайте про божественный объект
Также про SOLID, особенно принцип единственной ответственности.
Цитата Сообщение от Richik Посмотреть сообщение
Как оптимизировать общую картину?
Задача тривиальная, посмотрите на гитхабе готовые решения. Вообще это хорошая практика, смотреть чужой код.
1
20 / 19 / 3
Регистрация: 23.09.2014
Сообщений: 285
27.12.2018, 20:01  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Задача тривиальная, посмотрите на гитхабе готовые решения. Вообще это хорошая практика, смотреть чужой код.
Цитата Сообщение от tarasalk Посмотреть сообщение
В интернете полно шлака.

У меня ощущение что я найду что-то подобное этому примеру =(
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
27.12.2018, 20:17
Лучший ответ Сообщение было отмечено Richik как решение

Решение

illuminate/database. Это библиотека из ларавела, но по идеи и отдельно должна работать. Тут и миграции, и query builder, и ORM..
Для простых проектов я использую medoo, код там так себе, но удобная и рабочая.

А в гитхабе можно отсортировать по популярности и сразу видно нормальные продукты ( кроме CMS, там шлак )
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2018, 20:17
Помогаю со студенческими работами здесь

Нужно ваше экспертное мнение по этой сборке
блок питания thermaltake волга 1000w - 10400 руб корпус corsar 300r 5590 руб кулер deepcool gammaxx 300 1180 руб процессор...

Нужно экспертное мнение. Пойдет ли на старый ноутбук win7 или linux?
Всем привет! Хочу поставить на старенький ноутбук win7. Но есть сомнения в том, что он потянет его. Поэтому нужны ваши экспертные...

Нужно экспертное мнение! Что рациональнее!? почему так работают функции?!
Привет всем!:) Возникли небольшие непонятки с функциями которые вычисляют интеграл по формуле симпсона. Дело в том что ф-ция integ_2 ...

Класс подключения к базе
Здравствуйте, разбираюсь для себя в ооп и mvc, столкнулся с таким вопросом рассматривая на примере joomla во всех файлах работа с бд...

Собственный класс подключения к базе данных
Хочу реализовать интерфейс IDbConnection, но особым образом, есть база данных, доступ к ней только по http и через функцию Getdata(sql...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru