Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Общая переменная для двух классов


Автор: champion 26.5.2009, 19:25
Приветствую всех!

Есть два класса:
Код

    class main
    {
        public $stderr  = Array ( );
        
        public function __construct ( )
        {
            require "class.db.php";    
            $db = new db ( "MySQL" , "localhost" , "вава" , "авававв!" , "авав" );            
            $query = $db -> query ("SELECTs * from `табл`");

        }
        
        public function stdout ( )
        {
            print_r ( $this->stderr );
        }
        
        public function stderr ( $err )
        {
            print $err;
            $this -> stderr[] = $err;
        }
    }

    class db extends main
    {
        public $type = "MySQL";
        
        public function __construct ( $type, $host , $login , $password , $db )
        {
            if ( $type == "MySQL" )
            {
                if ( !mysql_connect ( $host , $login , $password ) ) $this -> stderr ( mysql_error() );
                if ( !mysql_select_db ( $db ) ) $this -> stderr ( mysql_error() );
            }
        }
        
        public function &query ( $query )
        {
            if ( $this -> type == "MySQL" )
            {
                $q = mysql_query ( $query );
                if( mysql_error( ) ) $this -> stderr ( mysql_error() );
                return $q;
            }
        }
        
    }


Если при выполнении SQL запроса возникает ошибка, мне нужно передать главному классу main, который был определён в файле index.php, значение в функцию stderr, которая в свою очередь должна добавить в массив stderr сообщение об ошибке.. но почему то не срабатывает. Почему так?

Автор: Elfet 28.5.2009, 19:37
А что не срабатывает?

Добавлено через 3 минуты и 14 секунд
Ошибок не вызывает никаких? 

Я точно не помню, вызывает ли в таком случае наследник конструктор родителя? 

А вообзе очень хитрая структура, можно было бы проще. 

Автор: nerezus 29.5.2009, 12:13
А зачем писать свой DB-класс?
В интернете этого тысячи, используй готовый, проверенный и протестированный.
И если что-то не нравится, то исправь эти несколько строк, а не переписывайте все.

P.S. Zend_Db

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)