Функции в классах

Тема в разделе "Как сделать...", создана пользователем Tele2, 27 мар 2013.

  1. Tele2

    Tele2

    Регистр.:
    14 апр 2006
    Сообщения:
    784
    Симпатии:
    94
    Привет!

    не могу разобраться, прошу помощи. Есть простые функции:

    PHP:
    class ldap {
    public 
    $ldapserver 'server';
    public 
    $ldapport 'port';
    public 
    $basedn 'basedn';
    public 
    $base 'basepass';

    public function 
    connect ()
    {
        
    $connection ldap_connect($this->ldapserver$this->ldapport);   
        
    ldap_set_option($connectionLDAP_OPT_PROTOCOL_VERSION3);
        return 
    $connection;
    }
    function 
    bind ($c)
    {
            
    $bind ldap_bind($c$this->basedn$this->basepass);
            if (!empty(
    $bind))
            {
                return 
    1;
            }
            else
            {
            return 
    0;
            }
    }
    }
    таким образом:
    $bind = $ldap->bind($ldap->connect());
    это не красиво. Объясните, почему у меня не работает, если я меняю код функции bind таким образом:

    PHP:
    function bind ()
    {
            
    $bind ldap_bind($this->connect$this->basedn$this->basepass);
            if (!empty(
    $bind))
            {
                return 
    1;
            }
            else
            {
            return 
    0;
            }
    }
     
  2. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    потому что Вы вызываете переменную connect, а не функцию connect()
     
    Tele2 нравится это.
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Исправьте функцию вот так:

    PHP:
    class ldap {
    public 
    $ldapserver 'server';
    public 
    $ldapport 'port';
    public 
    $basedn 'basedn';
    public 
    $base 'basepass';
     
    public function 
    connect ()
    {
        
    $connection ldap_connect($this->ldapserver$this->ldapport);
        
    ldap_set_option($connectionLDAP_OPT_PROTOCOL_VERSION3);
        return 
    $connection;
    }
    function 
    bind ()
    {
            
    $c $this->connect ();
            
    $bind ldap_bind($c$this->basedn$this->basepass);
            if (!empty(
    $bind))
            {
                return 
    1;
            }
            else
            {
            return 
    0;
            }
    }
    }
    Сам скрипт вызывать так:
    PHP:
    $bind $ldap->bind();
     
    Tele2 нравится это.