Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965

ООП в PHP (разница)

08.03.2015, 07:34. Показов 1597. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
В первую очередь, поздравляю всех девушек с международным женским днем 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
67
68
69
<?php
$title = $lang['registration'];
 
if (isset($_POST['submit']))
{
    $user_login = mysqli_real_escape_string($connect, trim($_POST['login']));
    $user_mail = mysqli_real_escape_string($connect, trim($_POST['mail'])); 
    
    if (empty($user_login))
    {
        $info = $lang['error_login'];
    }
    else if (iconv_strlen($user_login, 'utf-8') < 3) 
    {
        $info = $lang['error_login_2'];
    }   
    else if (empty($user_mail))
    {
        $info = $lang['error_mail'];            
    }
    else if (!preg_match('/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/', $user_mail))
    {
        $info = $lang['error_mail_2'];
    }
    else if ($_POST['kapcha'] != $_SESSION['rand_code'])
    {
        $info = $lang['error_captcha']; 
    }
    else
    {   
        $sql = "SELECT user_id
            FROM user 
            WHERE user_login = '$user_login'";
        $query = mysqli_query($connect, $sql) or die(mysqli_error());       
        if (mysqli_num_rows($query) > 0)
        {
            $info = $lang['error_login_3'];
        }
        else
        {
            $sql2 = "SELECT user_id
                FROM user 
                WHERE user_mail = '$user_mail'";
            $query2 = mysqli_query($connect, $sql2) or die(mysqli_error());         
            if (mysqli_num_rows($query2) > 0)
            {
                $info = $lang['error_mail_3'];
            }
            else
            { 
                $user_password = rand(100000000, 999999999);
                $md5password = md5($user_password);
                $user_date_reg = date('d-m-Y / H:i', strtotime('+3 hours'));
        
                $sql3 = "INSERT INTO user (user_login, user_mail, user_password, user_date_reg)
                VALUES ('$user_login', '$user_mail', '$md5password', '$user_date_reg')";
                $query3 = mysqli_query($connect, $sql3) or die(mysqli_error());
 
                $message = $lang['message_registration_mail'] . $user_password;
                $headers = 'content-type: text/html; charset = utf-8';              
                mail($user_mail, $lang['title_mail'], $message, $headers);
                    
                $info = $lang['ok_reg'];
            }
        }
        
    }
}
?>
Как будет выглядеть этот же код в ООП? Покажите, пожалуйста, примерчик. Не обязательно весь код, хотя бы пять строчек.
Большое спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2015, 07:34
Ответы с готовыми решениями:

php и ООП
Привет ! Изучаю PHP давно и вполне успешно. В основном всегда пользовался процедурным программированием.(хотя и знал про ООП) Уже который...

ООП в PHP
Вопрос в следующем: в каких случаях применение ООП в PHP оправдано. Замедляет ли такой подход выполнение и если да, то на сколько.

PHP ООП
Здравствуйте! С языком PHP знаком не так давно, но простенький сайт с админкой и т. п. могу написать, но ведь PHP это объектно...

4
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
08.03.2015, 09:50
Ну если в ООП переводить, то лучше весь код переводить, чтобы было в соответствие с MVC(Model View Controller).
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
08.03.2015, 10:17  [ТС]
Цитата Сообщение от UchihaSV Посмотреть сообщение
Ну если в ООП переводить, то лучше весь код переводить
Я понимаю, что мешать процедурный код и ООП это не вариант.
Я прошу показать пример, и для примера привел процедурный код...
0
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
08.03.2015, 11:10
Лучший ответ Сообщение было отмечено Raisin Zn как решение

Решение

Raisin Zn, ну по вашему коду, примерно так:
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
class registration {
    private $login;
    private $mail;
    private $password;
    
    public function index($login,$mail) {
        $this->login = $login;
        $this->mail = $mail;
        $verify_result = $this->verify();
        if ($verify_result != 'ok') return $verify_result;
        $db_result = $this->db_action();
        if ($db_result != 'ok') return $db_result;
        $this->reg_mail();
        return('ok');
    }
    
    private function verify() {
        if ($_POST['kapcha'] != $_SESSION['rand_code']) return('ошибка капчи');
        else if (empty($this->login) || empty($this->mail)) return('поля не заполнены');
        else if (iconv_strlen($this->login, 'utf-8') < 3) return('логин меньше 3 символов');
        else if (!preg_match('/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/', $this->mail)) return('E-mail недействительный');
        else return('ok');
    }
 
    private function db_action() {
        global $connect;
        $this->login = mysqli_real_escape_string($connect, trim($this->login));
        $this->mail = mysqli_real_escape_string($connect, trim($this->mail));
        $sql = "SELECT user_id FROM user WHERE user_login = '".$this->login."'";
        $query = mysqli_query($connect, $sql) or die(mysqli_error());
        if (mysqli_num_rows($query) > 0) return('такой логин уже существует');
        $sql2 = "SELECT user_id FROM user WHERE user_mail = '".$this->mail."'";
        $query2 = mysqli_query($connect, $sql2) or die(mysqli_error());
        if (mysqli_num_rows($query2) > 0) return('такой E-mail уже существует');
        $this->password = rand(100000000, 999999999);
        $md5password = md5($this->password);
        $user_date_reg = date('d-m-Y / H:i', strtotime('+3 hours'));
        $sql3 = "INSERT INTO user (user_login, user_mail, user_password, user_date_reg) VALUES ('".$this->login."', '".$this->mail."', '".$md5password."', '".$user_date_reg."')";
        $query3 = mysqli_query($connect, $sql3) or die(mysqli_error());
        return('ok');
    }
    
    private function reg_mail() {
        $title = "Регистрация завершена";
        $message = "Вы зарегистрировались на сайте - ".$_SERVER['SERVER_NAME'].", ваш пароль: ".$this->password;
        $headers = 'content-type: text/html; charset = utf-8';
        mail($this->mail, $title, $message, $headers);
    }
}
 
if (isset($_POST['submit'])) {
    $reg = new registration;
    $reg_result = $reg->index($_POST['login'],$_POST['mail']);
    if ($reg_result == 'ok') echo "Вы успешно зарегистрированы, ваш пароль отправлен вам на E-mail";
    else echo $reg_result;
}
Сначала идет класс с методами для регистрации и т.д. потом при существовании $_POST['submit'], создается объект класса регистрации, и в метод index(), передаются данные формы - логин и мейл, затем получаем результат работы метода, и выводим его на экран.

Так как вы не показали что у вас в массиве $lang, я заменил его в коде, на текста с ошибками, которые при ошибке возвращаются, в результат $reg_result (у вас он присваивался в $info) и выводятся.

Раз уж вы читали про ООП, думаю вы поймете код и его суть.
1
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
08.03.2015, 12:40  [ТС]
UchihaSV, большое спасибо Вам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2015, 12:40
Помогаю со студенческими работами здесь

Зачем в php ООП ?
Здраствуйте, я тут решил узнать какой смысл в php использовать ООП, и никак немогу найти на это ответ, помоему ООП только увеличивает...

PHP и основы ООП
&lt;? $h = array (10.01,9.95,9.82,10.1,10.15); $r = array(24.92,25.03,25.15,24.8,25.04); $pi = 3.14; for($i=0;$i&lt;5;$i++) { ...

PHP и ООП и Yii
Уважаемые форумчане, очень прошу объяснить все на пальцах. Я не понимаю ООП. Я не знаю что делать, но не могу я его понять. Также не...

Насколько существенна разница между php 5. 3 и 5. 5
Здравствуйте! Ситуация такова, у меня есть сайт, и на сколько я понимаю, написан он на PHP 5.2 или 5.3. Недавно мы решили сделать...

курсы php где делается ставка на ООП
Здравствуйте , года 4 назад увлекался Php , сейчас знания устарели - наверное очень сильно ,хотел бы восстановить знания по php и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru