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

Tele2

Гуру форума
Регистрация
14 Апр 2006
Сообщения
784
Реакции
95
Привет!

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

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($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
    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;
        }
}
 
потому что Вы вызываете переменную connect, а не функцию connect()
 
Исправьте функцию вот так:

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($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
    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();
 
Назад
Сверху