Quando utilizzare la visibilità statica? [duplicare]

0

Non riesco a raggiungere l'utilizzo primario della visibilità statica. La mia domanda è perché hanno usato il metodo statico & proprietà in questo codice?

class PassHash {

    // blowfish
    private static $algo = '$2a';
    // cost parameter
    private static $cost = '$10';

    // mainly for internal use
    public static function unique_salt() {
        return substr(sha1(mt_rand()), 0, 22);
    }

    // this will be used to generate a hash
    public static function hash($password) {

        return crypt($password, self::$algo .
                self::$cost .
                '$' . self::unique_salt());
    }

    // this will be used to compare a password against a hash
    public static function check_password($hash, $password) {
        $full_salt = substr($hash, 0, 29);
        $new_hash = crypt($password, $full_salt);
        return ($hash == $new_hash);
    }

}
    
posta user1203401 20.06.2014 - 22:47
fonte

1 risposta

0

Chiediti se un determinato metodo richiede uno stato specifico per un'istanza di un oggetto. In caso contrario, static è appropriato, poiché il metodo è limitato alla classe stessa, non all'istanza dell'oggetto.

I metodi

static sono essenzialmente metodi di utilità; prendono i parametri e restituiscono un valore; niente di più.

Si consideri

public static function check_password($hash, $password) {
    $full_salt = substr($hash, 0, 29);
    $new_hash = crypt($password, $full_salt);
    return ($hash == $new_hash);
}

Richiede uno stato specifico per un'istanza di un oggetto? Tutto ciò di cui ha bisogno è passato come parametri? Memorizza uno stato? Restituisce un valore idempotente?

Inoltre, vuoi essere in grado di chiamarlo senza richiedere un'istanza di classe?

Se tutte queste cose sono vere, l'esplorazione static è più appropriata rispetto all'ambito degli oggetti.

    
risposta data 20.06.2014 - 22:51
fonte

Leggi altre domande sui tag