2010-03-29 4 views
2

모든 프로젝트에서 사용하는 MySQL 클래스를 직접 작성했습니다. 나는 무겁게 사용자 계정을 기반으로하는 프로젝트를 시작하려고하고 이것에 대한 자신 만의 클래스를 만들 계획이다. 문제는 사용자 클래스의 많은 메소드가 MySQL 클래스의 MySQL 쿼리 및 메소드가 될 것입니다.수업 내에서 수업을 사용 하시겠습니까?

예를 들어, 누군가의 암호를 업데이트 내 사용자 클래스의 메소드가 있습니다

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); 
    } 
} 

당신이 볼 수 있듯이

(I 종류의이 그렇게 구문 오류를 : 변명 돌진) MySQL을 사용하여 사용자 암호를 업데이트 할 수 있지만 MySQL 클래스를 사용하지 않으면이 사실이 맞습니까? 내 사용자 클래스 내에서 내 MySQL 클래스를 더티처럼 보이지 않게 사용할 수있는 방법이 없습니다. 방금 $DB = new DB();과 같은 일반적인 방법으로 사용합니까? 그건 내 mysql.class.php을 어딘가에 포함하는 것을 의미 할 것입니다 ...

나는이 점에 대해 매우 혼란스러워서 어떤 도움을 주셔서 감사합니다.

+1

: 다음

class User { private $_db; public function __construct($db) { $this->_db = $db; } public function updatePassword($usrName, $newPass) { // use $this->_db here } } 

과 : 사용자 클래스에서 사용할 수있는 클래스를 만들 수

한 가지 방법은 DB 클래스의 인스턴스 생성자를 호출하는 것입니다 오래된 절차 기능 대신 PDO를 사용합니다. PDO는 더 안전하고 깨끗하며 mysql_보다 더 나은 기능을 가지고 있습니다. – ryeguy

답변

1

예, 클래스를 사용하려면 mysql.class.php을 포함해야합니다. 그러나 이것은 Java, Python 등에서와 비슷합니다. 사용하는 것을 지정해야합니다. 최대에 확인, 또한

require 'mysql.class.php' 

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

아주 좋은 예, 감사합니다. 나는 하나를 선택하기 전에 다른 사람들의 대답을보기 위해 잠시 기다릴 것이다. – Joe

+0

+1, 좋은 대답 – user187291

0

연구를 탐구한다. 또는 다른 말로하면 inheritance입니다.

+0

이 경우 클래스를 확장하는 것이 잘못된 접근 방법입니다. 논리적으로 사용자는 데이터베이스와 아무 관련이 없습니다. –

+0

링크를 제공해 주셔서 감사합니다. 이전에 클래스 확장에 대해 어느 정도 알고 있었지만,이 경우에 사용하는 것이 좋은지 확실하지 않습니까? 사용자 함수를 포함시키기 위해 MySQL 클래스를 확장하거나 MySQL 함수를 포함하도록 사용자 클래스를 확장하고 싶지 않거나 내가 누락 된 것이있을 수 있습니다. : P --- 편집 : 펠릭스 날 전에, 도움을 주셔서 감사합니다 :) – Joe

관련 문제