-1

データベース接続

$db_user = 'root';
$db_pass='';
$db = new PDO('mysql:host=localhost;dbname=resource_management', $db_user, $db_pass);

これが作成された User クラスです

class User{     
    protected $username;
    protected $pass;
    public function __construct($username, $password){
        $this->username = $username;
        $this->password = $password;
    }   
    public function test(){     
        $sql = "select * from user";
        $data = $db->query($sql);
        while ($row = $data->fetch(PDO::FETCH_OBJ)){
            var_dump($row);
            echo $row->username;
        }
    }   
}

ここで User クラスをテストしてみます

$user = new User('admin', 'test');
$user->test();
4

1 に答える 1

3

通常、コンストラクタで渡すか、引数を自動ロードするファクトリ パターンを使用します。

class Factory{
  public static function setdb($db) {
    self::$db = $db;
    }

  public static function getUser($role, $action) {
    return new User(self::$db, $role, $action);
    }

  public static function getUserPermissions($role, $action) {
    return new UserPermissions(self::$db, $role, $action);
    }
  }

そんな感じ。注: 私はパターンの専門家ではなく、現在パターンについて学んでいるので、上記のコードにはバグが含まれているか、完全ではない可能性があります。次に、次のようにアクセスします。

$DB = new PDO(...);
factory::setdb($DB)

$User = Factory::getUser('admin', 'test');

コードは自明だと思います。次に、他のメソッドを追加してさらにオブジェクトを作成し、それらに必要な変数を自動的に渡すことができるため、すべてを手動で記述する必要はありません。これはFactory パターンと呼ばれます。必要に応じて、さらにメソッドを追加できます。

注 2:グローバルは頭に浮かぶかもしれませんが、それはひどい考えです。

于 2013-10-21T13:04:49.197 に答える