Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
28 / 28 / 0
Регистрация: 27.03.2011
Сообщений: 156
1

Правильно ли со стороны ООП составлен сайт?

10.10.2012, 10:38. Показов 1024. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброе время суток. Недавно начал учить ООП, хотел бы узнать мнение проффесионалов, есть хоть какието сдвиги у меня в голове. Вот код:

index.php
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/*
 * Подключаем класс с базами данных
 */
require_once("db_connect.class.php");
    /*
     * Создаем класс для отображения главной страницы
     */
     
     class index extends Db_connect{
        /*
         * Обьявляем 3 главные части старицы, они же свойства страницы
         */
        public $head;
        public $body;
        public $footer;
        
        function __construct($head, $body){
            
            /*
             * Обьявлем свойства как массивы
             */
             
            $this->head = $head;
            $this->body = $body;
            
            parent::__construct();
        }
        
        /*
         * Метод по составлению головы страницы
         */
        
        public function head_construct(){
            
            /*
             * Отображаем голову страницы
             */
            
            echo '
                <!doctype html>
                <html lang="ru">
                <head>
                    <meta charset="utf-8">
                    <title>'.$this->head['title'].'</title>
                    '.$this->head['script'].'
                    '.$this->head['css'].'
                </head>';
            
        }
        
        /*
         * Метод по составлению тела страницы
         */
        
        public function body_construct(){
            /*
             * Подключаемся к базе данных
             */
             
             parent::connect();
             
             /*
              * Достаем нам нужную страницу из базы
              */
              
              $query = 'SELECT `page_body` FROM `pages` WHERE `page_name`="'.$this->body.'"';
              
              $result = mysql_query($query) or die(mysql_error());
              
              $row = mysql_fetch_array($result) or die(mysql_error());
              
                /*
                * Отображаем страницу
                */
              
                echo '<body>'.$row['page_body'].'</body>';
              
              /*
               * Закрываем подключение
               */
               
               mysql_close();
            
        }
        
        public function footer_construct(){
            echo '</html>';
        }
     }
 
    /*
     * Обьявляем свойства для главной страницы
     */
     
     $head = array(
        'title' => 'Главная страница',
        'script' => '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
                     <script src="view/js/script.js"></script>',
        'css' => '<link rel="stylesheet" type="text/css" href="view/css/style.css">'
     );
     
     $body = 'index';
     
     /*
      * Отображаем главную страницу 
      */
      
     $object = new index($head, $body);
     
     $object->head_construct();
     
     $object->body_construct();
     
     $object->footer_construct();
?>
db_connect.class.php

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
<?php
/*
 * Класс подключения к базе данных
 */
class Db_connect{
    
    /*
     * Определяем свойста класса
     */ 
     
    private $host;
    private $db_name;
    private $user;
    private $password;
    
    /*
     * Задаем свойствам значения 
     */
     
    function __construct(){
        $this->host='127.0.0.1';
        $this->user='root';
        $this->password='';
        $this->db_name='saloons';
    }
    
    /*
     * Метож подключения к базе данных
     */
    
    public function connect(){
        mysql_connect($this->host, $this->user, $this->password)or die(mysql_error());
        mysql_select_db($this->db_name);
    }
}
 
?>
login.class.php

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/*
 * Класс авторизации пользователя 
 *
 * Подключаем и наследуем класс с подключением к базе данных 
 */
require_once("db_connect.class.php");
 
class Login extends Db_connect{
    
    /*
     * Определяем свойства класса
     */
     
    private $login;
    private $password;
    
    function __construct(){
        
        /*
         * Подключаем родительский конструктор
         */
         
        parent::__construct();
        
        /*
         * Определяем свойства класса
         */
        
        $this->login = $_POST['login'];
        $this->password = md5(sha1($_POST['password']));        
    }
    
     
    /*
     * Метод авторизации пользователя
     */
    
    public function enter(){
        
            if(empty($this->login)){echo 'Заполните все поля';} else{
            
            /*
             * Подключаемся к базе данных
             */
            parent::connect();
            
            /*
             * Создаем запрос на отбор пользователя
             */
            
            $query = 'SELECT `login`, `password` FROM `online_users` WHERE `login`='.$this->login;
            $result=mysql_query($query);
            
            /*
             * Создаем ассоциативный массив
             */
            $row = mysql_fetch_array($result);
            
            /*
             * Открываем ссесию и перенаправляем на закрытую страницу
            */
            
            if(($this->login==$row['login'])&&($this->password==$row['password'])){
            echo 'Вход выполнен';
                 /*session_start();
                 $_SESSION['user'] = $this->login;*/
            
             /*
              * Закрываем подключение mysql
              */
            mysql_close();
            echo '<script>location.href="navigation.php";</script>';
            exit();
            } else {echo 'Логин или пароль были введены неверно';}
            }
        }
    }
 
$object = new Login();
$object->enter();
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2012, 10:38
Ответы с готовыми решениями:

Правильно ли составлен запрос
Здравствуйте, подскажите правильно ли составлен запрос: try{ $stmt = $pdo -&gt;...

Правильно ли составлен запрос ?
SELECT * FROM author_user WHERE name = &quot;.$log.&quot; password = sha1(&quot;.$pass.&quot;)&quot; Правильно ли...

Правильно ли составлен вопрос
Вопрос Is he 22 years old ? правильно составлен ? Или надо He is 22 years old ?

Правильно составлен robots.txt ?
Правильно составлен robots.txt ? User-agent: * Disallow: /a/ Disallow: /stat/ Disallow:...

5
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
10.10.2012, 10:58 2
Я не хочу Вас обижать но это не ООП это вы просто классы пишите. С чего у вас класс представления наследуется от класса БД. Зачем представлению знать про БД ?
Зачем модель Login выполняет запросы БД ? Зачем модели знание о БД ? Зачем модель выводит информацию на страницу.

Не по теме:

Вам знакомо слово MVC? Какие еще шаблоны проектирования вы знаете? Как можно тут применить шаблон одиночка (Singleton) ?

1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.10.2012, 11:17 3
Плюс к тому что сказали выше - зачем делать открытыми все свойства в первом классе? И почитайте про шаблонизацию, если у вас html-кода будет скажем раза в три больше вы почувствуете себя не очень хорошо
1
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
10.10.2012, 19:55 4
Цитата Сообщение от Marik1993 Посмотреть сообщение
Недавно начал учить ООП
смысл ооп это выделение из кода некоей сущности обладающей поведением, у вас же тупо все понапихано в классы
1
21 / 21 / 3
Регистрация: 24.07.2010
Сообщений: 161
11.10.2012, 11:18 5
Попробуйте почитать про MVC. Тогда Вам станет все ясно.
По поводу БД есть хорошие платформы для этого, например Doctrine или Propel, их можно прикрутить к любому сайту.
1
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.10.2012, 16:22 6
рано ещё ему MVC
пусть с шаблонов начнет как минимум - http://www.phpinfo.su/articles... v_php.html
а по-хорошему об ООП ему надо забыть на пару лет, что бы хотя бы на функциях научился писать и отделять логику приложения от логики отображения

Добавлено через 8 минут
Marik1993, твоя ошибка в том, что ты не удосужился даже почитать, что такое ООП и зачем оно нужно. Тебе знакомы такие имена как Гради Буч, Фаулер? Думаю, что нет. А в их книгах очень хорошо описано ООП, что это и для чего это нужно.
0
11.10.2012, 16:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2012, 16:22
Помогаю со студенческими работами здесь

Правильно ли составлен robots.txt?
Добрый день уважаемые SEO, подскажите пожалуйста правильно ли я составил robots.txt p.s. ничего не...

Query, правильно ли составлен запрос?
Правильно ли я составил запрос? public Cursor getTitleDB() { return...

Правильно ли составлен robots.txt?
Приветствую! Года 2 назад составлял robots.txt для своего сайта на wordpress. Вот он: Недавно...

Правильно ли составлен robots.txt
Добрый день! Прочитала все страницы в этой теме, но хочется перестраховаться, подскажите,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru