D
D
deepin2019-07-23 10:11:51
PHP
deepin, 2019-07-23 10:11:51

Do I understand the essence of OOP correctly?

trink
<?php


namespace app\controllers;


use app\models\InitialTraining;

class InitialTrainingController extends AppController
{
    public function indexAction()
    {
        $this->trainingRedirect(1);
        $this->site->description = 'Начальное обучение: этап 1-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_1_2_5_6_7($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 1-й этап обучения', '/initial-training/step-two');
        }
    }

    public function stepTwoAction()
    {
        $this->trainingRedirect(2);
        $this->site->description = 'Начальное обучение: этап 2-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_1_2_5_6_7($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 2-й этап обучения', '/initial-training/step-three');
        }
    }

    public function stepThreeAction()
    {
        $this->trainingRedirect(3);
        $this->site->description = 'Начальное обучение: этап 3-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_3($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 3-й этап обучения', '/initial-training/step-four');
        }
    }

    public function stepFourAction()
    {
        $this->trainingRedirect(4);
        $this->site->description = 'Начальное обучение: этап 4-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $data_unit = $model->getUnit($this->user->id);
        $this->set(compact('site', 'user', 'training', 'data_unit'));
        if (isset($_POST['do'])) {
            $model->step_4($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 4-й этап обучения', '/initial-training/step-five');
        }
    }

    public function stepFiveAction()
    {
        $this->trainingRedirect(5);
        $this->site->description = 'Начальное обучение: этап 5-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_1_2_5_6_7($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 5-й этап обучения', '/initial-training/step-six');
        }
    }

    public function stepSixAction()
    {
        $this->trainingRedirect(6);
        $this->site->description = 'Начальное обучение: этап 6-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_1_2_5_6_7($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 6-й этап обучения', '/initial-training/step-seven');
        }
    }

    public function stepSevenAction()
    {
        $this->trainingRedirect(7);
        $this->site->description = 'Начальное обучение: этап 7-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_1_2_5_6_7($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 7-й этап обучения', '/initial-training/step-eight');
        }
    }

    public function stepEightAction()
    {
        $this->trainingRedirect(8);
        $this->site->description = 'Начальное обучение: этап 8-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $data_country = $model->getCountry();
        $this->set(compact('site', 'user', 'training', 'data_country'));
        if (isset($_POST['do'])) {
            if (empty($_POST['country'])) {
                $this->alertRedirect('danger', 'Вы не выбрали страну');
            } elseif (!in_array($_POST['country'], range(1, 7))) {
                $this->alertRedirect('danger', 'Такой страны нет в игре');
            }
            $model->step_8($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 8-й этап обучения', '/initial-training/step-nine');
        }
    }

    public function stepNineAction()
    {
        $this->trainingRedirect(9);
        $this->site->description = 'Начальное обучение: этап 9-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $data_operation = $model->getOperation($this->user->id);
        $data_mission = $model->getMission($this->user->id);
        $this->set(compact('site', 'user', 'training', 'data_operation', 'data_mission'));
        if (isset($_POST['do'])) {
            $model->step_9_10($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 9-й этап обучения', '/initial-training/step-ten');
        }
    }

    public function stepTenAction()
    {
        $this->trainingRedirect(10);
        $this->site->description = 'Начальное обучение: этап 10-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $data_operation = $model->getOperation($this->user->id);
        $data_mission = $model->getMission($this->user->id);
        $this->set(compact('site', 'user', 'training', 'data_operation', 'data_mission'));
        if (isset($_POST['do'])) {
            $model->step_9_10($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 10-й этап обучения', '/initial-training/step-eleven');
        }
    }

    public function stepElevenAction()
    {
        $this->trainingRedirect(11);
        $this->site->description = 'Начальное обучение: этап 11-й';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            if (empty($_POST['avatar'])) {
                $this->alertRedirect('danger', 'Вы не выбрали аватар');
            } elseif (!in_array($_POST['avatar'], range(1, 8))) {
                $this->alertRedirect('danger', 'Такого аватара нет в игре');
            }
            $model->step_11($this->user->id);
            $this->alertRedirect('success', 'Вы прошли 11-й этап обучения', '/initial-training/step-twelve');
        }
    }

    public function stepTwelveAction()
    {
        $this->trainingRedirect(12);
        $this->site->description = 'Начальное обучение: этап 12-й - последний';
        $site = $this->site;
        $user = $this->user;
        $model = new InitialTraining();
        $training = $model->getTraining($this->user->training);
        $this->set(compact('site', 'user', 'training'));
        if (isset($_POST['do'])) {
            $model->step_12($this->user->id);
            $this->alertRedirect('success', 'Вы прошли все этапы обучения', '/menu');
        }
    }
}

Can someone comment on whether I am moving in the right direction when switching from procedural to OOP?
And another specific question: here I have a model instance used in every action, so can I immediately file it in the constructor?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Ronald McDonald, 2019-07-23
@deepin

public function stepTwoAction()
...
public function stepThreeAction()
...
public function stepFourAction()
...
public function stepFiveAction()
...
...
...
...
public function stepTwelveAction()

After stepTwelveAction() my eye twitched and I couldn't count.
Are you just kidding?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question