Задать вопрос
Angel_D13
@Angel_D13
Вечный студент

Почему не сохраняется присвоенное переменной класса значение?

Добрый день. Продолжаю вникать в ООП, и столкнулся с тем, что не до конца понимаю суть геттеров и сеттеров.
Есть класс:
class Forms {
    private $insertID = '';

public function __construct() {
        // подключение своему классу для работы с PDO (db_pdo.php)
        try {
            require_once 'c:\xampp\htdocs\EnginePHP\class\db_pdo.php';
            $this->myPDO = new DB_PDO();
        } catch(Exeption $e) {
            echo "Ошибка создания класса";
        }
        //
    }
// возвращаем ID вставленной записи
    public function getID() {
        return $this->insertID;
    }

    // устанавливаем ID вставленной записи
    public function setID($insert) {
        $this->insertID = $insert;
    }

    // вывод city и установка префикса
    public function outCity() {
        require 'c:\xampp\htdocs\EnginePHP\polls\city10.php';

        // получаем ID города по префиксу
    if (@$_REQUEST['select']) {
        $data = array($_REQUEST['select']);
        $pref = $this->myPDO->selectWhere("SELECT `id` FROM `city` WHERE `prefix` = ?", $data);
        $id_city = implode('', $pref);

        // вставляем первую запись, получаем номер первой записи, для дальнейшего обновления по номеру записи
        $data = array( 'date_start' => date("Y-m-d H:i:s"), 'id_city' => $id_city );
        var_dump($data);
        $result = $this->myPDO->insert("INSERT INTO `result` (date_start, id_city) values (:date_start, :id_city)", $data);
        if ($result) {
            $this->setID($result);
        } else {
            echo "Insert error!";
        }
        var_dump($this->getID());
    }
    }


    // вывод school с префиксом
    public function outSchool() {
        require 'c:\xampp\htdocs\EnginePHP\polls\school20.php';

            // получаем id текущей записи и обновляем выбор пользователя - школа
        if (@$_REQUEST['select1']) {
            $id = $this->getID();
            var_dump($id); 
            $id_school = ($_REQUEST['select1']);
            $data = array( 'id_school' => $id_school, 'id' => $id );
            var_dump($data); 

            $result = $this->myPDO->update("UPDATE `result` SET `id_school` = :id_school WHERE `id` = :id", $data);
            if ($result == 0) {
                echo "Update error!";
            }
        }
    
    }

    // вывод первой части опроса
    public function outOpros1() {
        require 'c:\xampp\htdocs\EnginePHP\polls\opros30.php';
        $id = $this->getID();
        var_dump($id);
        $age = $_REQUEST['ages'];
        $own = $_REQUEST['familys'];
        $clas = $_REQUEST['clasC'];
        $data = array ('age' => $age, 'own' => $own, 'class' => $clas, 'id' => $id );

        $this->myPDO->update("UPDATE `result` SET `age` = :age, `own` = :own, `class` = :class WHERE `id` = :id", $data);

    }

}


Когда я вставляю запись, у меня все нормально, возвращается АйДи этой записи. В следующем методе, я по этому АйДи должен обновить запись, но уже в методе getID() пусто. Не пойму. Например, для использования префиксов, я использую точно такие же геттеры и сеттеры, все работает. Запросы проверены, все работает, если вместо геттера подсунуть обычное число ID. И главное ошибок не выдает, просто вот есть свойство $this->insertID, и вот оно пустое...
  • Вопрос задан
  • 264 просмотра
Подписаться 1 Простой 15 комментариев
Пригласить эксперта
Ответы на вопрос 1
php666
@php666
PHP-макака
На этот говнокод невозможно смотреть, у меня кровь из глаз пошла.

Давай ты для начала
1. Почитаешь об автозагрузке классов
2. Перестанешь писать require в методах и почитаешь про внедрение зависимостей.
3. Перестанешь использовать собаку @ там, где это не требуется. А именно в условии if (@$_REQUEST['select']) , для этого есть функции isset и empty.
4. Внятно сформулируешь свой вопрос без кучи этого околорабочего кода и напишешь небольшой класс, описав проблемы с геттерами и сеттерами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы