이전 시간에 만들었던 함수를 모아 놓은 것이 클래스다. 말은 이렇게 했지만 클래스는 조금 어렵다. 클래스를 100%이해하고 일을 할 필요는 없지만 대충 어떻게 만들어져 있고 어떤걸 가져다 써야되는지 또 어디서 확인해봐야하는지등은 알아야 하겠기에 다음 내용을 잘 읽어보고 모르겠으면 그냥 넘어가도 된다. 지금 이걸 꼭 다 알 필요는 없다. 자꾸 하다보면 자연스럽게 알아지기도 한다.
다음 파일을 만들어보자.
/test.php
전형적인 클래스의 모습을 하고 있다. 클래스 안에 생성자가 있고 각각 함수들이 포함돼 있다. 클래스 이름이 Members인것으로 보아 회원 정보에 대한 함수들을 모아 놓은 것으로 예상된다.
이부분이 Members 클래스를 가져다 쓰려고 인스턴스라는 걸 만드는 과정이다. $member 변수가 인스턴스가 돼서 Members클래스 안에 있는 변수나 함수등을 가져다 쓸 수 있게 된다.
위에 선언한 인스턴스 $members를 통해서 disp()함수를 호출했다. '->' 이런 모양으로 불러온다. 별다른함수 호출 없이 바로 disp()를 호출 했기때문에 해당 변수에는 생성자에서 선언한 변수들이 들어가 있을 것이다.
이번엔 minfo함수를 호출했다. minfo함수는 특정 사용자의 이름과 이메일을 구해서 변수에 집어 넣었다. 그리고 disp()함수로 출력해주는 것이다. 그러니 화면에는 admin의 이름과 이메일이 표시될 것이다.
그다음에 있는 minof2를 불러올때의 모양이 조금 다르다. 이 함수는 public static function minfo2($userid)로 선언했기때문이다. static이 있는 경우는 클래스 내부의 변수를 이용하지 않고 바로 리턴값을 받아 오는 경우에 많이 사용한다. static인 경우에는 인스턴스를 생성하지 않고 저런 모양으로 함수를 불러 올 수 있다.
앞으로도 이런 모양을 많이 보게 될 것이다. 이런 모양을 보면 쫄 필요가 없다. 아 클래스 안에 함수를 불러 왔구나. minfo2위에 커서를 두고 F12키를 누르면 함수의 내용을 볼 수 있도록 커서를 해당 함수위로 이동시켜준다. 누가? 비쥬얼스튜디오코드가.
물론 이렇게 안쓰고 인스턴스를 이용해 $minfo2=$member->minfo2('admin'); 이렇게 써도 되지만 보통은 위에 처럼 쓴다.
위 파일을 실행하면 아래와같은 결과 화면이 나온다.
name is tester
email is t@t.com
name is 운영자
email is admin@admin.com
Array
(
[0] => 운영자
[1] => admin@admin.com
)
Array
(
[0] => 운영자
[1] => admin@admin.com
)
물론 내 화면의 결과값가 다를 순 있을 것이다. 다만 형식은 비슷해야한다. 오류가 난다면 될때까지 해보고 그래도 안되면 댓글로 질문을 하시라.
이번 시간엔 간단하게 클래스의 아주 기본적인 내용을 알아봤다. 읽어봐도 잘 모르겠으면 넘어가도 된다. 어차피 자주 보면 다 할 수 있게 된다.
다음엔 상속이란 걸 해볼것이다. 상속이란 것도 실제 일할때 많이 사용한다.
함수와 클래스를 알아야하는 이유는 여러분들이 앞으로 PHP에 관한 일을 한다면 99%의 확률로 남이 만든 함수와 남이 만든 클래스를 사용해 작업을 해야 하기 때문이다. 아예 아무것도 모르면 일을 할 수가 없다. 아니 할 수 없진 않고 어렵다. 100% 알고 일을 하면 좋겠지만 그것도 불가능한 일이니 기본적인 것만이라도 확인하고 넘어가는 것이 좋다.
'PHP강좌 > 게시판만들기강좌' 카테고리의 다른 글
php+mysql 게시판 만들기 강좌 #36. 클래스를 이용한 멀티게시판 1 (0) | 2023.04.10 |
---|---|
php+mysql 게시판 만들기 강좌 #35. 함수와 클래스 사용하기 - 4 (0) | 2023.04.06 |
php+mysql 게시판 만들기 강좌 #33. 함수와 클래스 사용하기 - 2 (0) | 2023.04.06 |
php+mysql 게시판 만들기 강좌 #32. 함수와 클래스 사용하기 - 1 (0) | 2023.04.05 |
php+mysql 게시판 만들기 강좌 #31. 회원 게시판 - 인덱스를 걸어보자. (0) | 2023.04.04 |