[ php ] Class 사용법 정리 1. 클래스 정의 > php

본문 바로가기
사이트 내 전체검색

php

[ php ] Class 사용법 정리 1. 클래스 정의

페이지 정보

작성자 웹지기 댓글 0건 조회 6,039회 작성일 18-09-11 14:28

본문

1.클래스정의



클래스란?


클래스는객체의변수와함수를정의하는템플릿이며,이에따라변수로표현되는데이터영역과이러한데이터영역에접근할수있는함수로구성됩니다.

클래스내에정의된변수를멤버변수(member variable)라고하고함수를메쏘드(method)라고합니다. 

C++과같은객체지향언어에서는멤버변수를데이터멤버,메쏘드를멤버함수라고호칭합니다.

PHP에서클래스를사용하는것은 C++또는자바와거의비슷합니다.


클래스정의


클래스를정의(class definition)할때는키워드"class"를사용합니다.

클래스를구성하는멤버변수와메쏘드를정의할때는"var"과"function"이라는키워드를사용합니다.

"function"은일반함수를정의할때도사용되지만"var"은클래스의멤버변수를정의할때만사용되는키워드로,멤버변수를정의할때는반드시명시하여야합니다.

예를들어클래스는아래와같이정의합니다.

이예는 PHP 매뉴얼에있는것으로수정하지않고가져왔습니다.

이예에서는 $items라는멤버변수와 add_item, remove_item라는메쏘드가정의되어있습니다.


classCart{

  var $items;  // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num){

    $this->items[$artnr]+= $num;

}

// Take $num articles of $artnr out of the cart


function remove_item ($artnr, $num){

    if($this->items[$artnr]> $num){

      $this->items[$artnr]-= $num;

      returntrue;

    }else{

      returnfalse;

    } 

  }

}


멤버변수의초기화


PHP에서는멤버변수값을아래와같이상수또는변수를이용하여초기화할수있습니다.


상수로초기화할때:

classCart{

  var $items =0;  // Items in our shopping cart

}


변수로초기화할때(1):

classCart{

    var $items;  // Items in our shopping cart

    functionCart($items){

        $this->items = $items;

    }

}



변수로초기화할때(2):

$items =0;


classCart{

  var $items = $GLOBALS["items"];  // Items in our shopping cart

}


반면 PHP4에서는var변수에는상수로만초기화할수있고,상수가아닌값을가지고초기화할때는생성자를이용하여야합니다.

즉,var $items = $GLOBALS["items"];와같은표현은허용하지않습니다.


따라서아래와같은표현은 PHP4에서는허용하지않습니다.

classCart{

  var $todays_date = date("Y-m-d");

  var $name = $firstname;

  var $owner ='Fred '.'Jones';

  var $items = array("VCR","TV");

}



PHP4에서초기화할때동일한결과를얻으려면아래와같이생성자를이용합니다.

classCart{

  var $todays_date;

  var $name;

  var $owner;

  var $items;


functionCart(){

    $this->todays_date = date("Y-m-d");

    $this->name = $GLOBALS['firstname'];

    

  }

}


PHP4 예약어


stdClass


stdClass는Zend에서내부적으로사용하고있는예약어입니다.따라서사용자는클래스명으로 stdClass를사용할수없습니다.

get_declared_classes()함수를사용하면현재스크립트에정의된클래스명을배열에담아되돌려줍니다.따라서이함수를이용하면 stdClass의존재를확인할수있습니다.

<?php

classVegetable{

}

classSpinachextendsVegetable{

}

$arr_class = get_declared_classes();

while(list($k,$v)=each($arr_class)){

  echo("\$arr_class[$k]=$v\n");

}

?>



이문서를실행하면아래와같은결과를얻을수있습니다.

$arr_class[0]=stdClass

$arr_class[1]=OverloadedTestClass

$arr_class[2]=Directory

$arr_class[3]=OCI-Lob

$arr_class[4]=vegetable

$arr_class[5]=spinach



위예제의실행결과를보면,사용자가정의한 vegetable, spinach 외에도 stdClass,OverloadedTestClass,Directory, OCI-Lob가있는것을볼수있습니다.

좀더자세한것은메뉴"클래스&객체 함수 >> get_declared_classes()"를살펴보시기바랍니다.


매직함수(magic function)


__sleep, __wakeup과같이"__"로시작하는매직함수는 PHP 클래스내에서특수한목적으로사용됩니다.

따라서이함수들이가지고있는문서화된매직기능을사용할필요가없다면클래스내에이함수들을정의해서는안됩니다.

자세한것은메뉴에서"매직함수"장을살펴보기바랍니다.


$this가 무엇에 쓰는 물건인고?


클래스메쏘드내에서만사용되며,클래스의현재인스턴스를참조할때사용하는변수이며,예를들어현재객체내에 something라고명명된임의의변수또는함수를참조하기위해서는 $this->something을사용하여야합니다.

즉,"$this"의의미는new연산자에의해생성될객체자신을의미합니다.

그러니아직생성되지않은객체자신을의미하는의사(擬似)변수(pseudo variable)이며,"my own"또는"current object"라고불리웁니다.


앞에서클래스를붕어빵틀과같다고했습니다.정의된클래스에의해생성된객체는붕어빵틀로만들어낸수많은붕어빵이지요.

아래예에서본다면, $붕어빵1->make("특급밀가루")으로 make()메쏘드에접근한다면이때 make()메쏘드내의 $this는 $붕어빵1을의미하고, $붕어빵2->make("중급밀가루")으로접근한다면

이때 $this는 $붕어빵2를의미하고, $붕어빵3->make("저급밀가루")으로접근한다면이때 $this는 $붕어빵3을의미합니다.

class붕어빵{

  var재료;


function make($재료){

    $this->재료= $재료;

    ......

  }

}


$붕어빵1=new붕어빵;// 인스턴스 "붕어빵1"

$붕어빵2=new붕어빵;// 인스턴스 "붕어빵2"

$붕어빵3=new붕어빵;// 인스턴스 "붕어빵3"


$붕어빵1->make("특급밀가루");

$붕어빵2->make("중급밀가루");

$붕어빵3->make("저급밀가루");

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 82건 2 페이지
  • 열람중 [ php ] Class 사용법 정리 1. 클래스 정의
  • 1.클래스정의클래스란?클래스는객체의변수와함수를정의하는템플릿이며,이에따라변수로표현되는데이터영역과이러한데이터영역에접근할수있는함수로구성됩니다.클래스내에정의된변수를멤버변수(member variable)라고하고함수를메쏘드(method)라고합니다.C++과같은객체지향언어에서는멤버변수를데이터멤버,메쏘드를멤버함수라고호칭합니다.PHP에서클래스를사용하는것은 C++또는자바와거의비슷합니다.클래스정의클래스를정의(class definition)할때는키워드"class"를사용합니다.클래스를구성하는멤버변수와메쏘...
  • 웹지기 09-11 6040 0 0 댓글 0
  • 65 [ php ] Class 사용법 정리 2. 객체생성
  • 2.객체생성객체생성=객체초기화(object initialization)=인스턴스화(instantiation)클래스는붕어빵을만드는틀(= type,=template)과같은것으로,클래스내에정의된메쏘드와멤버변수를사용하기위해서는틀을가지고붕어빵을만드는것같이객체를생성하여야합니다.객체(object)를초기화하는방법은new연산자를사용하여객체를변수에인스턴스시키는것입니다.classCart{ var $items; // Items in our shopping cart// Add $num articles of $artnr ...
  • 웹지기 09-11 7764 0 0 댓글 0
  • 64 [ php ] Class 사용법 정리 3. 클래스상속
  • 3.클래스상속클래스를상속하려면?기존에이미작성된클래스를상속(class inheritance)받으면이미작성된메쏘드와멤버변수를그대로이어받게됩니다.상속받은특성에덧붙여새로운특성을추가하는방법으로새로운클래스를정의하게됩니다.이와같이기존의클래스로부터특성을이어받는것을상속이라고합니다.이때확장된클래스를정의하기위해"extends"라는키워드를사용합니다.부모클래스&amp;자식클래스에관련된용어기존의클래스와확장된클래스를나타내는용어는객체지향언어마다다양하게사용되고있습니다.그러나어떤용어를사용하더라도같은의미...
  • 웹지기 09-11 3940 0 0 댓글 0
  • 63 [ php ] Class 사용법 정리 4. 생성자
  • 4.생성자생성자란?생성자(constructor)는클래스의새로운인스턴스가생성될때자동적으로호출되는클래스내의함수이며,클래스명과동일한이름를갖는특수한메쏘드입니다.classCart{ var $items; // Items in our shopping cart// Add $num articles of $artnr to the cartfunction add_item ($artnr, $num){ $this-&gt;items[$artnr]+= $num; }// Take $num articles of $ar...
  • 웹지기 09-11 5128 0 0 댓글 0
  • 62 [ php ] Class 사용법 정리 5.범위연산자
  • 5.범위연산자범위연산자란?PHP4에서만지원되며클래스와메쏘드또는클래스와멤버변수를연결시켜주는일로범위연산자(scope resolver)뒤에나오는메쏘드와멤버변수의스코프(사용범위)를지정하는일을하는것입니다.클래스명::메쏘드명클래스명::멤버변수명범위연산자사용목적1.인스턴스되지않은클래스의메쏘드에접근할때2.부모클래스의메쏘드와멤버변수에접근할때인스턴스되지않은클래스에있는메쏘드에접근할때class A { function example(){ echo "클래스 A에 정의된 메쏘드 example.\n"; }...
  • 웹지기 09-11 5036 0 0 댓글 0
  • 61 [ php ] Class 사용법 정리 6.부모키워드
  • 6.부모키워드부모클래스의메쏘드호출보통부모클래스에서선언된메쏘드를자식클래스에서재정의하는이유는크게두가지가있습니다.1.부모클래스메쏘드를완전히새롭게정의하기위하여2.부모클래스메쏘드의기능에새로운기능을추가하기위하여첫번째기능은부모클래스의메쏘드를무시하고메쏘드에새로운정의를함으로써부모클래스의메쏘드정의를숨기는것입니다.그러나때로는부모클래스의메쏘드를모두지우는것보다는추가적인기능이필요한경우가있습니다.이같은경우에는부모클래스의메쏘드와자식클래스에서재정의된메쏘드를모두수행하게될것입니다.즉,재정의된메쏘드구문내에서부모클래스의메쏘드를호출할수...
  • 웹지기 09-11 4744 0 0 댓글 0
  • 60 [ php ] Class 사용법 정리 7. 매직함수
  • 7매직함수__sleep, __wakeup과같이"__"로시작하는매직함수(magic function)는 PHP 클래스내에서특수한목적으로사용됩니다.따라서이함수들이가지고있는문서화된매직기능을사용할필요가없다면클래스내에이함수들을정의해서는안됩니다.__sleepserialize 함수를통해객체를직렬화할때해당클래스에매직함수 __sleep가정의되어있는지확인합니다.만약정의되어있다면객체를직렬화하기전에 __sleep 함수를수행합니다.이함수는직렬화하기전에객체멤버에대하여조작해야하는작업,또는직렬화하기전에미리수행...
  • 웹지기 09-11 4179 0 0 댓글 0
  • 59 [ php ] _SERVER, getenv 환경변수
  • PHP 환경변수 정리 서버 변수 용도$_SERVER['PHP_SELF'] 현재 실행하고 있는 스크립트의 파일명 DocumentRoot로부터 취득$_SERVER['argv'] 스크립트에 받은 인수의 배열$_SERVER['argc'] 스크립트에 받은 인수의 수$_SERVER['GATEWAY_INTERFACE'] 서버가 사용하고 있는 CGI 의 버전$_SERVER['SERVER_ADDR'] 현재의 스크립트가 실행되고 있는 서버의 IP 어드레스$_SERVER['SERVER_NAME'] 현재의 스크립트가 ...
  • 웹지기 09-11 7399 0 0 댓글 0
  • 58 [ php ] facebook sharer를 이용할 경우 부가 메타데이터 넣는 방법
  • 페이스북 쉐어러를 사용할때는 http://www.facebook.com/sharer/sharer.php?u=공유할 url 만 입력하면 된다. 하지만, 해당 URL에 대한 대표 이미지나, 설명같은 것은 무작위 또는 가장 강조되는 테그를 가져오기때문에 목적이 그냥 특정 URL을 공유하는 것이라면 상관없지만 이게아니라면 의도치않은 결과가 나올 수 있다. 이런 부분을 해소하기 위해서 페이스북에서는 메타데이터를 이용해 특정 정보를 가져온다. 추가할 수 있는 메타 데이터들에는 url,...
  • 웹지기 09-19 15352 0 0 댓글 0
  • 56 [ php ] ereg_replace // eregi_replace 사용법
  • ereg_replace는 str_replace와 형식은 같으나, 정규식을 사용한다는 점이 다르다. $a = "1a2b3"; $a = ereg_replace("[a-z]", "x", $a); echo $a; eregi_replace는 ereg_replace와 형식은 같으나 대소문자를 구분하지 않는다는 점이 다릅니다. $a = "1AB"; $a = ereg_replace("[a-z]", ...
  • 웹지기 09-19 4377 0 0 댓글 0
  • 55 [ php ] PREG 한글 특수문자 체크 & 추출
  • 홍길1234동abc입!!_#니다 라는 문구가 있다고 했을때 해당 문구에서 홍길동입니다 1234 abc !!_# 를 각각 추출해내는 함수이다. euckr을 기준으로 작성된 함수이며 euckr에서는 한글 패턴의 추출이 어려운 관계로 UTF-8로 전환하여 변환하는 형태이다. 핵심은 1 한글,2 영문 ,4 숫자 ,8 특수기호로 명시하고 처리하는 식이다. ========= 내용 ============== $msg = "홍길1234동abc입!!_#니다"; ...
  • 웹지기 09-19 8613 0 0 댓글 0
  • 54 [ php ] php를 활용하여 리눅스 계정 만들기
  • 1. 먼저, /usr/sbin/useradd를 웹 서비스 디렉토리에 복사[code] #cp /usr/sbin/useradd /usr/www/html/[/code] (웹 서비스 디렉토리는 리눅스에 따라 약간의 차이가 있을 수 있슴) 2. 복사한 useradd의 setid를 설정합니다 (물론 /usr/www/html의 위치에서 명령을 내림 )[code] #chmod a+s useradd [/code] 3. php소스 (소스파일은 웹 서비스 디렉토리에 있어야 함)[code] #vi ...
  • 웹지기 09-19 4829 0 0 댓글 0
  • 53 [ php ] 파일 확장자 구하기 여러가지 방법
  • [code] &lt;?php $filename = "mypage.asp"; //1 strrchr함수를 사용해서 확장자 구하기 $ext = substr(strrchr($filename, '.'), 1); echo$ext; echo"&lt;br&gt;"; //2 strrpos 함수와 substr함수를 사용해서 확장자 구하기 $ext = substr($filename, strrpos($filename, '.') + 1)...
  • 웹지기 09-19 16748 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
2,793
어제
8,307
최대
33,828
전체
8,654,259

그누보드5
Copyright © funyphp.com. All rights reserved.