Bir sınıf içinde bir sınıf kullanma?

3 Cevap php

Kendimi benim tüm projelerde kullanmak MySQL sınıfını inşa. Agır kullanıcı hesaplarına dayalı bir proje başlatmak için yaşıyorum ve ben bu lutfen için kendi sınıfımı bina planı. Şey kullanıcı sınıfındaki yöntemler bir yeri MySQL sınıfından MySQL sorguları ve yöntemler olacak, olduğunu.

Örneğin, ben birinin şifresini güncelleştirmek için benim kullanıcı sınıfta bir yöntemi var:

class user() {
    function updatePassword($usrName, $newPass)
    {
        $con = mysql_connect('db_host', 'db_user', 'db_pass');
        $sql = "UPDATE users SET password = '$newPass' WHERE username = '$userName'";
        $res = mysql_query($sql, $con);
        if($res) return true;
        mysql_close($con);
    }
}

(Ben tür :) bu yüzden yazım hataları mazur koştu)

Eğer bu kullanıcıların parola güncellemek için MySQL kullanmak, ama benim MySQL sınıfını kullanarak olmadan olur görebileceğiniz gibi, bu doğru mu? Ben o kirli görünen olmadan benim kullanıcıların sınıf içinde benim MySQL sınıfını kullanabilirsiniz hangi bir yol göremiyorum. Ben sadece o $DB = new DB(); gibi normal bir şekilde kullanıyor musunuz? Bu benim mysql.class.php yere çok dahil olmak anlamına gelir ...

Teşekkürler ben bu konuda oldukça karışık değilim, bu yüzden herhangi bir yardım mutluluk duyacağız.

3 Cevap

Evet sınıfını kullanmak için mysql.class.php içermek zorunda. Eğer kullandığınız belirtmek zorunda vb Java, Python, gibi ama bu benzer.

Kullanıcı sınıfında sınıf kullanılabilir yapmak için bir yolu DB sınıfının bir örneği ile kurucusunu çağırmak olacaktır:

class User {
    private $_db;
    public function __construct($db) {
        $this->_db = $db;
    }

    public function updatePassword($usrName, $newPass) {
        // use $this->_db here
    }

}

ve daha sonra:

require 'mysql.class.php'

$user = new User(new DB());
$user->updatePAssword('foo', 'bar');

Sen keşfetmek dependency injection (PHP example) olmalıdır

Üzerinde çalışma extending a class. Veya başka bir deyişle, inheritance.