Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Вопрос наследование классов ПХП (https://forum.antichat.xyz/showthread.php?t=29540)

steamer 21.12.2006 02:12

Вопрос наследование классов ПХП
 
Есть 2 класса
PHP код:

class db{
    var 
$db_con;
    function 
db_open($mysql_host$db_name$db_user$db_pass){
        @
$this->db_con=mysql_connect($mysql_host$db_user$db_pass);
        @
mysql_select_db($db_name$this->db_con);
        return 
$this->db_con;
    }
    function 
table_select ($table_name$condition$column){
        
$allrows=array();
        
$i=0;
        
$query="SELECT * FROM $table WHERE $column=$condition;";
        
$result=mysql_query($query$this->db_con);
        while (
$row=mysql_fetch_array($result)){
            
$allrows[$i]=$row;
            
$i++;
        }
        return 
$allrows;
    }
}
class 
user extends db{
    var 
$user_id;
    var 
$user_name;
    var 
$reg_date;
    var 
$bonus=array();
    var 
$cookie;
    var 
$session;
    var 
$user_agent;
    function 
user_check($name$password_hash){
        
$query="SELECT id FROM users WHERE name='$name' and password='$password_hash';";
        
$result=mysql_query($query$this->db_con);
        
$this->user_id=mysql_result($result,0,0);
    }
    function 
user_info(){
        if (!isset(
$this->user_id)){
            
$user_info='none';
        }
        else{
            
$table_name='users';
            
$condition=$this->user_id;
            
$column='id';
            
$user_info=table_select ($table_name$condition$column);
        }
        return 
$user_info;
    }


Как сказано в учебнике здесь в классе user должен наследоваться атрибут $db_con из класса db. Он наследуется, но пустой, т.е. без значения. Почему? И наследование методов: из класса db наследуется table_select. Я могу вызвать метод в методе как в примере выше или при наследовании допустима только такая конструкция:
$db_con=$user->db_open($mysql_host, $db_name, $db_user, $db_pass);
и в результате у меня видна переменная $db_con в этом объекте.

nc.STRIEM 21.12.2006 02:32

Цитата:

Сообщение от steamer
Он наследуется, но пустой, т.е. без значения. Почему?

Не понял что ты имееш ввиду??? как обект класа может наследоваться со значениями, если у него их нет!! знчения могут быть присвоены только уже при обявлении представителя этого класса


Цитата:

$db_con=$user->db_open($mysql_host, $db_name, $db_user, $db_pass);
А что в данном слдучае есть $user ?? не заметил чтоб ты его гдето обявлял! (прежде чем обратиться к обекту какого либо класса нужно обявить представителя от этого класса)

вобще бред какойто...
не понял четко твоего вопроса...


Время: 02:05