class 클래스 문의드립니다...

class 클래스 문의드립니다...

QA

class 클래스 문의드립니다...

본문

class를 공부하는중입니다
예제나 글을 도무지 모르겠어서 소스로 부딪혀가며 공부해보려고
기존에 사용하고 있는 함수부분을 class형태로 바꿔보고 있습니다
초보자이다보니 사실 뭐가 뭔지 잘모르겠는데,
처음부터 이리저리해봐도 막혀서 질문드립니다..
뭐가 잘못된건지 알수가 없네요..ㅜㅜ
어떻게 고쳐야할지.. 조언좀 바랍니다.ㅜㅜ


------------------------------------기존에 함수형태로 사용하고있는소스
//부동산정보 가져오기
function land($wr_id)
{
    $land_content = array();

    $sql = "select * from g5_write_land where wr_id = '".$wr_id."'";
    $row = sql_fetch($sql);

    $land_content[ca_name] = $row[ca_name];//카테고리
    $land_content[wr_subject] = $row[ca_name];//제목
    $land_content[wr_1] = $row[wr_1];//위치1
    $land_content[wr_2] = $row[wr_2];//위치2
    .....

    return $land_content;
}


$land_content = land('745')

카테고리는 <?php echo $land_content['ca_name']?>
제목은 <?php echo $land_content['wr_subject']?>
위치1 <?php echo $land_content['wr_1']?>
............

------------------------------------class로 바꾸고있는중..
에러가 막나는데 어디가 잘못된건지 못찾겠습니다.ㅜㅜ

class land
{
    public $wr_id ;
    public $land_content = array();
 
    //처음에 자동으로 호출하는 함수(생성자)
    function __construct ( $wr_id )
    {
        $sql = "select * from g5_write_land where wr_id = '".$wr_id."'";
        $row= sql_fetch($sql);

        $land_content[wr_id] = $row['wr_id'];
        $land_content[ca_name] = $row['ca_name'];
        $land_content[wr_subject] = $row['wr_subject'];
        $land_content[wr_1] = $row['wr_1'];

        return $land_content;
    }

    ..기타함수들
 
}

$land_content = new land( "8987");

카테고리는 <?php echo $land_content['ca_name']?>
제목은 <?php echo $land_content['wr_subject']?>
위치1 <?php echo $land_content['wr_1']?>

이 질문에 댓글 쓰기 :

답변 3

생성자는 우선 변수를 받고,

getLand라는 메소드를 만드셔서 사용하세요

 

생성자에다 그렇게 하시는거보다는 별도로 메소드를 만드시는것이 좋을듯 합니다.

 


public $wr_id ;
public $land_content = array();
public __construct ( $wr_id )
{
   $this->$wr_id = $wr_id;
}
 
public function getLand()
{
  //$this->$wr_id 활용하여 쿼리 작성하여서요
 return 변수값;
}

 


//생성후 이런식으로 메서드 호출해 주시면되요
$cld = new land( "8987");
$cld->getLand();

저도 클래스 잘 안써서. 우선 생성자에 리턴이 있는데 맞는지 의심이 들고.

new 하면 인스턴스 생성하는것이라서 배열처럼 사용하는것 아닙니다.

퍼블릭으로 $land_content 있으니 외부에서 접근이 가능하므로 생성자의 결과를 return 하는것이 

아니라 배열로 설정한 퍼블릭 멤버 변수에 넣어야 하고. 그러면

 

$land_content->$land_cotent['wr_id']; 이런식이 될텐데요,.

공부하는것 아니라면 꼭 클래스 쓸 필요는 없습니다. 완벽히 익힌 다음 사용하는 것이

좋습니다. 클래스 쓰는 나름 이유가 있어야 합니다. 그렇지 않으면 함수 사용보다 못 할 수 있습니다.

 

 

원래 함수 사용해서 하셨던게 클래스 개념을 잘 사용하신거같은데 ㅎㅎ

아래꺼 문법이 안맞아서그렇지 개념은 잘 맞는거같은데요, 

아래에서 생성자는 return 을 하지말아야하고요, 

클래스로 생성한 객체 자체가 $land_content 가되는거니까

land 클래스에 public $land_content 변수가 있으면 안되고, 

기존에 함수형으로 사용할때 리턴하는 배열의 키값 

wr_id, ca_name, wr_subject, wr_1 등이 

클래스 내에

public $wr_id;

public $ca_name;

public $wr_subject;

public $wr_1;

등으로 있어야하고, 

생성자에서 쿼리날려서 정보 가져오면 각 정보들을 

저 변수들에게 할당해주면되구요, 

 


$land_content = new Land('111');
echo $land_content->ca_name;

이런식으로 사용하시면 됩니다. 

js 나 java, c 등 다른언어에서 사용하는 . 이 php 에서는 -> 에요

답변 너무 감사합니다!!!! 하다가 막혀서 질문좀..ㅜㅜㅜ
일단 __construct 요기 안에서 생성된변수값이 하단에 찍어보면 안나오네요.
그리고 그밑에 해당매물의 코멘트 갯수, 인근업체정보등을 추가로 가져오려고
이리저리만지는데, 에러나고 그러네요
도움좀 부탁드립니다...꼭 배우고 싶습니다..

class land
{
public $wr_id;
public $ca_name;
public $wr_subject;
public $wr_1;
public $wr_2;
public $wr_3;
public $wr_4;
public $wr_5;
public $wr_6;
public $wr_7;
public $wr_8;
public $wr_9;
public $wr_10;

public $comment_cnt;

public $around_data;
public $around_wr_id;
    //public $land_content = array();
 
    //처음에 자동으로 호출하는 함수(생성자)
    function __construct ( $wr_id )
    {
        $sql = "select * from g5_write_land where wr_id = '".$wr_id."'";
        $row= sql_fetch($sql);

        $this->$wr_id      = $row['wr_id'];
        $this->$wr_subject = $row['wr_subject'];
        $this->$wr_1      = $row['wr_1'];
        $this->$wr_2      = $row['wr_2'];
        $this->$wr_3      = $row['wr_3'];
        $this->$wr_4      = $row['wr_4'];
        $this->$wr_5      = $row['wr_5'];
        $this->$wr_6      = $row['wr_6'];
        $this->$wr_7      = $row['wr_7'];
        $this->$wr_8      = $row['wr_8'];
        $this->$wr_9      = $row['wr_9'];
        $this->$wr_10      = $row['wr_10'];

        //echo  $land_content;
    }


//해당매물의 코멘트 갯수추출하기
$sql = " select count(*) as cnt from g5_write_land where wr_parent = '{$wr_id}'";
echo $sql;
$row = sql_fetch($sql);
$this->$comment_cnt = $row['cnt']; //마이샵리스트 출력시 값이 있는지 체크



//인근aoanf정보 가져오기
function around_data($wr_id, $wr_1)
{
$sql = " select wr_id from g5_write_land where wr_1 = '{$wr_id}'";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++){
$around_wr_id .= $row[wr_id].",";
}
}



 
}

$land_content = new land("1");

echo $land_content->wr_id;
echo $land_content->wr_subject;

echo $land_content->comment_cnt;

echo $land_content->around_wr_id;

답변을 작성하시기 전에 로그인 해주세요.
전체 43
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT