반응형
말랑Cow
IT
말랑Cow
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Linux (33)
    • Windows (6)
    • Network (7)
    • Hardware (10)
    • Zabbix (13)
    • python (9)
    • script (0)
    • docker (16)
    • NAS (1)
    • DB (3)
    • php (33)
    • jQuery (1)
    • 정보보안기사 (0)
    • Ajax (1)
    • Javascript (21)
    • DELL (0)
    • HPE (0)
    • Secui (0)
    • AWS (2)
    • Elastic (0)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ZABBIX
  • 리눅스
  • docker
  • JavaScript
  • 자바스크립트
  • bash
  • php 클래스
  • php
  • CentOS
  • 네트워크
  • jQuery
  • 도커
  • php 객체
  • 파이썬
  • Python
  • 자빅스
  • Linux
  • Shell
  • 서버
  • 모니터링
hELLO · Designed By 정상우.
말랑Cow

IT

클래스 및 객체(4) - $this-> 의 이해
php

클래스 및 객체(4) - $this-> 의 이해

2021. 8. 5. 11:04
반응형

이번엔 클래스를 생성하고 그 클래스를 통한 인스턴스를 생성해보겠습니다.

 

class MyFileObject1{
    function isFile(){
        return false;
    }
}

$file = new MyFileObject1();
var_dump($file->isFile());

MyFileObject1 이라는 클래스를 생성하였고 그 안에 isFile 이라는 메소드를 만들었습니다.

isFile 메소드는 항상 false를 리턴합니다.

 

해당 클래스를 기반으로 하는 $file 이라는 인스턴스를 생성했습니다.

그리고 isFile 이라는 메소드를 호출하여 그 값에 대한 정보를 var_dump 로 출력합니다.

 

클래스를 생성할 땐 다음과 같이 생성합니다.

class 클래스명{}

중괄호 안에는 클래스에 대한 내용물이 들어갑니다.

어떤 기능을 하는 함수, 객체지향 관점에서는 메소드라고 부르는데 메소드를 만들 땐 다음과 같이 생성합니다.

function 메소드명{}
// 메소드=함수와 같은 기능. 함수라고 해도 무방

 

이렇게 기본적인 클래스와 메소드를 만들고 해당 클래스를 통한 인스턴스를 생성하여 메소드를 호출해보았습니다.

 

이번엔 php 내장함수를 이용한 메소드를 만들고 클래스를 만들어 보겠습니다.

 

class MyFileObject2{
    function isFile(){
        return is_file($this->filename);
    }
}

$file1 = new MyFileObject2();
$file1->filename = 'test1.php';
var_dump($file1->isFile());
var_dump($file1->filename);


$file2 = new MyFileObject2();
$file2->filename = 'test2.php';
var_dump($file2->isFile());
var_dump($file2->filename);

MyFileObject2 라는 클래스를 만들었습니다.

그 안에 내용물에 isFile 이라는 메소드를 생성했고 그 메소드는 php 내장함수인 is_file을 이용했습니다.

여기서 $this->filename 이라는 것을 사용했습니다.

 

$this 에 대해서 이해하는데 너무 오래걸렸고 구글링을 하고 유튜브를 봐도 이해가 잘 안되었었는데 제가 이해한대로 적어보겠습니다.

 

클래스를 통해 인스턴스화 한 구체적인 인스턴스에서 변수를 사용하는 것은

$instance1->test
//인스턴스->변수

위와 같이 instance1 이라는 인스턴스에서 test라는 변수를 사용합니다.

 

$this 는 인스턴스 자체를 가리킵니다.

 

 

$instance1 = new myclass();
$instance2 = new myclass();
$instance3 = new myclass();
...
$instance1->test
$instance2->test
$instance3->test

myclass 라는 클래스로 여러개의 인스턴스를 생성했고, 각각의 인스턴스에서 변수를 사용하는 모양입니다.

 

myclass 라는 클래스 내에서 $this->test 형식으로 코드를 작성해야 위와 같이 사용할 수 있습니다.

그리고 저 test라는 변수는 각각의 인스턴스 안에서만 유효합니다.

 

$instance1->test = "1";
$instance2->test = "2";
$instance3->test = "3";

instance1 에서의 test값은 1이되고, instance2 에서의 test값은 2, instance3 의 test는 3 이 됩니다.

 

$this는 php의 법칙이고 약속된 방식입니다.

 

다시 위의 코드 설명으로 돌아갑니다.

class MyFileObject2{
    function isFile(){
        return is_file($this->filename);
    }
}

$file1 = new MyFileObject2();
$file1->filename = 'test1.php';
var_dump($file1->isFile());
var_dump($file1->filename);


$file2 = new MyFileObject2();
$file2->filename = 'test2.php';
var_dump($file2->isFile());
var_dump($file2->filename);

is_file() 은 괄호안의 파일이 file이 맞다면 true 아니면 false를 리턴하는 php 내장함수입니다.

is_file($this->filename) 은 인스턴스가 사용한 filename이 파일인지 아닌지 확인하는 기능이 됩니다.

이 기능은 MyFileObject2 라는 클래스안에서 isFile() 이라는 메소드로 정의되었습니다.

 

다음으로 MyFileObject2 클래스를 통해 file1 인스턴스를 생성했고 filename 변수의 값을 'test1.php' 로 사용했습니다.

마찬가지로 밑의 file2 인스턴스도 filename 변수를 사용했고 그 값은 'test2.php'가 됩니다.

 

위에서 언급했다시피 filename 변수값은 사용한 인스턴스 내에서만 유효한 값이 됩니다.

 

이제 위에 작성한 코드들을 종합하여 웹에 출력해보겠습니다.

 

<?php

class MyFileObject1{
    function isFile(){
        return false;
    }
}

$file = new MyFileObject1();
var_dump($file->isFile());

echo "<br>";
echo "<br>";

class MyFileObject2{
    function isFile(){
        return is_file($this->filename);
    }
}

$file1 = new MyFileObject2();
$file1->filename = 'test1.php';
var_dump($file1->isFile());
echo "<br>";
var_dump($file1->filename);
echo "<br>";
echo "<br>";

$file2 = new MyFileObject2();
$file2->filename = 'test2.php';
var_dump($file2->isFile());
echo "<br>";
var_dump($file2->filename);

?>

 

첫번째는 isFile이라는 메소드가 항상 false를 리턴하므로 false값이 출력되었고,

file1 인스턴스의 filename 변수는 test1.php 이 되며 파일이 존재하므로 true가 출력,

file2 인스턴스의 filename 변수는 test2.php 이 되며 파일이 존재하지 않으므로 false가 출력된 모습입니다.

반응형

'php' 카테고리의 다른 글

클래스 및 객체(6)  (0) 2021.08.18
클래스 및 객체(5)  (0) 2021.08.17
클래스 및 객체(3)  (0) 2021.08.05
클래스 및 객체(2)  (0) 2021.08.04
클래스 및 객체(1)  (0) 2021.08.03
    'php' 카테고리의 다른 글
    • 클래스 및 객체(6)
    • 클래스 및 객체(5)
    • 클래스 및 객체(3)
    • 클래스 및 객체(2)
    말랑Cow
    말랑Cow

    티스토리툴바