ФорумПрограммированиеПыхнуть хотите?Готовые решения → goDB — библиотека работы с MySQL

goDB — библиотека работы с MySQL

  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 27 ноября 2015 г. 2:49, спустя 6 дней 23 часа 26 минут

    Всем привет . Выскакие ошибка при создании объекта Call to protected go\DB\DB::__construct() from invalid context . Вообщем я взял класс go\DB\DB и сделал его родительским.

    class DateBase extends \go\DB\DB {
    //
    public function setQuery($values) {
            if ($values == $sSelect) {
                   $rX=$this->query($this->sSelect, array($this->sTable, $this->aWhere));
                   return $rX;
            } elseif ($values == $sUpdate) {
                $this->query($this->sUpdate, array($this->sTable, $this->aSet, $this->aWhere));
            }elseif ($values == $sInsert) {
                $this->query($this->sInsert,array($this->sTable,  $this->aSet));
            }elseif ($values == $sDelete) {
                $this->query($this->sDelete,array($this->sTable, $this->aWhere));
            }
        }
    }

    и потом хотел создать объект

    $oBox= new DateBase
    но выскакивает ошибка.

    P.S : В ОПП не силен еще. Надеюсь на помощь

  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 27 ноября 2015 г. 2:58, спустя 8 минут 15 секунд

    пробвал через parent вызывать , но ничего не происходит

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 ноября 2015 г. 3:24, спустя 26 минут 19 секунд

    protected __construct для либы это сильно )) там синглтон чтоли?

    Сапожник без сапог
  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 27 ноября 2015 г. 4:26, спустя 1 час 2 минуты 26 секунд

    @phpdude, четсно говоря не понял суть вопроса :(

  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 28 ноября 2015 г. 7:29, спустя 1 день 3 часа 2 минуты

    ВЫСКАКИЕ

    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 ноября 2015 г. 7:59, спустя 29 минут 54 секунды

    ВЫСКАКИЕ

    @Frozzeg, пизданул как господь

    не всё полезно, что в swap полезло
  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2015 г. 1:17, спустя 5 дней 17 часов 18 минут

    мда.

  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 22 декабря 2015 г. 2:41, спустя 18 дней 1 час 23 минуты

    Снова я :) всем привет. Ни с того ни с сего начала появляться ошибка Fatal error: Call to a member function close() on null in D:\xampp\htdocs\bereitschaftsdienst\vendor\go\db\goDB\DB.php on line 407 Самое интересное, что её не было до сих пор. Подскажите где можно искать ошибку в моих классах ;)

  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 22 декабря 2015 г. 2:48, спустя 7 минут 38 секунд

    хотя все работает как надо

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 22 декабря 2015 г. 3:44, спустя 56 минут 8 секунд

    Подскажите где можно искать ошибку в моих классах ;)

    Как найти ошибку в своем коде? [phpfaq.ru]

    хотя все работает как надо

    уже всё збс? или несмотря на ошибку всё збс?

    ιιlllιlllι унц-унц
  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 22 декабря 2015 г. 4:29, спустя 44 минуты 35 секунд

    @artoodetoo,

    уже всё збс? или несмотря на ошибку всё збс?

    несмотря на ошибку все работает. Я беру библиоитеку goDB как родительский и при обращаение к mysql командой Select выходит ошибка где-то в библиотеке

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 22 декабря 2015 г. 4:59, спустя 29 минут 45 секунд

    Это самый фиговый расклад, ИМХО. Игнорировать проблему плохо.

    У тебя неинициализированная переменная где-то. Возможно это результат опечатки, возможно где-то вернулся null как результат неуспешной операции, а ты это не отработал. Дебаж, чо.

    ιιlllιlllι унц-унц
  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 23 декабря 2015 г. 1:21, спустя 20 часов 22 минуты 27 секунд

    <?php
    
    
    class DBQuery extends go\DB\DB {
        private $sSelected='SELECT ?col FROM ?table WHERE ?where';
        private $sMultiSelected='SELECT * FROM ?table WHERE ?where';
        private $sMultiSelectedLim='SELECT * FROM ?table WHERE ?where LIMIT 1';
        private $sInsertInto='INSERT INTO ?table SET ?set';
        private $sDeleted='DELETE FROM ?table WHERE ?where';
        private $sUpdated='UPDATE FROM ?table SET ?set WHERE ?where';
        private $sInnerJoin='SELECT ?col FROM ?table INNER JOIN ?table ON ?where';
        private $aWhere;
        private $sTable;
        private $sTableInnerJoin;
        private $sCol;
        private $aSet;
    
        function __construct($sTable,$aWhere=0,$sCol=0,$aSet=0,$sTableInnerJoin=0) {
            $this->sTable=$sTable;
            $this->aWhere=$aWhere;
            $this->sCol=$sCol;
            $this->aSet=$aSet;
            $this->sTableInnerJoin=$sTableInnerJoin;
        }
    
        protected function dbcreated(){
            return go\DB\DB::create(Core::$params);
        }
    
        private function selected(){
            return $this->dbcreated()->query($this->sSelected, array($this->sCol,  $this->sTable,  $this->aWhere));
        }
    
        private function multiSelected($lim=0){
            if($lim==0){
            return $this->dbcreated()->query($this->sMultiSelected,array($this->sTable,  $this->aWhere));
        }else{
        return $this->dbcreated()->query($this->sMultiSelectedLim,array($this->sTable,  $this->aWhere));
        }
        }
    
        private function inserinto(){
            return $this->dbcreated()->query($this->sInsertInto,array($this->sTable,  $this->aSet));
        }
    
        private function update(){
            return $this->dbcreated()->query($this->sUpdated,array($this->sTable,  $this->aSet,  $this->aWhere));
        }
    
        private function delete(){
            return $this->dbcreated()->query($this->sDeleted,array($this->sTable, $this->aWhere));
        } 
    
        private function innerjoin(){
            return $this->dbcreated()->query($this->sInnerJoin,array($this->sCol,  $this->sTable, $this->sTableInnerJoin,  $this->aWhere));
        }
    
    
        /*
         * $lim - переменная добавляет в запрос select LIMIT 1
         */
        public function readyquery($condition,$limit=0){
            if($condition=='SELECT'){
                return $this->selected();
            }elseif ($condition=='MULTISELECT') {
                if($limit==0){
                   return $this->multiSelected(); 
                }  else {
                    return $this->multiSelected($lim=1);    
                }
            }elseif ($condition=='INSERT INTO') {
                return $this->inserinto();
            }elseif ($condition=='DELETE') {
                return $this->delete();
            }  elseif($condition=='UPDATE'){
                return $this->update();
            }elseif ($condition=='INNER JOIN') {
                return $this->innerjoin();
            }else {
                echo 'Not the correct inquiry';
            }
    }
    }

    @artoodetoo, ошибка где то вот здесь, но я её ни как не могу найти. Если вам не трудно, могли бы вы посмотреть ?

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 23 декабря 2015 г. 2:03, спустя 41 минуту 40 секунд

    @Kosteash, когда объявляешь в наследуемом классе конструктор - нужно вручную вызывать конструктор родителя

    
        function __construct($sTable,$aWhere=0,$sCol=0,$aSet=0,$sTableInnerJoin=0) {
            parent::__construct(***params***);
            $this->sTable=$sTable;
            $this->aWhere=$aWhere;
            $this->sCol=$sCol;
            $this->aSet=$aSet;
            $this->sTableInnerJoin=$sTableInnerJoin;
        }
    

    Спустя 181 сек.

    А вот сама ошибка возникает из-за кривого кода в исходной библиотеке.

    
    402         /**
    403      * The destructor
    404      */
    405     final public function __destruct()
    406     {
    407         $this->connector->close();
    408         $this->connector->removeLink();
    409         $this->connector = null;
    410     }
    

    неявно делается предположение, что $this->connector всегда будет объектом нужного класса. что, как показала практика, неверно.

    не всё полезно, что в swap полезло
  • Kosteash

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 23 декабря 2015 г. 2:11, спустя 8 минут 10 секунд

    @master, Спасибо большое

Пожалуйста, авторизуйтесь, чтобы написать комментарий!