Создание классов в Php

Discussion in 'PHP' started by steamer, 17 Dec 2006.

  1. steamer

    steamer Elder - Старейшина

    Joined:
    3 May 2006
    Messages:
    44
    Likes Received:
    7
    Reputations:
    1
    Есть вопрос по классам ПХП (кстати не помню кто, но кто-то грозился накатать статью по классам, поставил бы +). Есть к примеру класс:

    PHP:
    class db{
        var 
    $mysql_host;
        var 
    $db_name;
        var 
    $db_user;
        var 
    $db_pass;
        var 
    $table_name;
        function 
    db_open($mysql_host$db_name$db_user$db_pass){
            @
    $db_con=mysql_connect($mysql_host$db_user$db_pass);
            @
    mysql_select_db($db_name$db_con);
            return 
    $db_con;
        }
    }
    все работает, только не пойму зачем нужно вначале класса определять переменные, когда и без них все работает. Просто в книжке даны примеры, а зачем это и как влияет на работу класса не сказано.
     
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    http://ru.php.net/manual/ru/ref.classobj.php
     
  3. VampiRUS

    VampiRUS Elder - Старейшина

    Joined:
    31 Dec 2005
    Messages:
    210
    Likes Received:
    105
    Reputations:
    57
    Нужны наверно для того чтоб к ним можно было обратиться.
     
  4. EXSlim

    EXSlim Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    73
    Likes Received:
    20
    Reputations:
    18
    В твоем примере, свойства могут быть использованы и в других методах класса. При создании обьекта их определяеш и всё.

    В твоем примере от внутренних дублирующих можно отказаться.

     
    1 person likes this.
  5. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    class db{
    var $mysql_host;
    var $db_name;
    var $db_user;
    var $db_pass;
    var $table_name;
    function db_open($mysql_host, $db_name, $db_user, $db_pass){
    @$db_con=mysql_connect($mysql_host, $db_user, $db_pass);
    @mysql_select_db($db_name, $db_con);
    return $db_con;
    }
    }

    они не нужны в том классе, код которого ты дал.
     
  6. steamer

    steamer Elder - Старейшина

    Joined:
    3 May 2006
    Messages:
    44
    Likes Received:
    7
    Reputations:
    1
    Короче я понял примерно так: если я хочу в функциях в одном классе использовать эту переменную (типа как глобальную для класса), то я ее определяю как var и затем не передаю в функцию типа
    PHP:
    my_function ($id)
    , а пишу что типа
    PHP:
    function my_function(){
    $this->id;
    }
    Возникает второй вопрос.
    Если я расширяю класс
    PHP:
    class extends {
       function 
    1_from_class_1(){
        
    $s=myfunction_from_class_2();
       }
    }
    Т.Е. использовать функции из второго класса включая их в первый.
     
  7. SMiX

    SMiX Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    227
    Likes Received:
    55
    Reputations:
    29
    перехрдим на PHP5 и юзаем модификаторы private, protected и public