PHP

생성자 (인스턴스 초기화)

수업소개

인스턴스를 생성할 때 해야 할 작업을 담아두는 약속된 메소드가 __construct 이고, 이 메소드를 생성자(constructor)라고 부릅니다.  이 수업에서는 생성자를 만드는 방법에 대해서 알아봅니다. 

수업

코드

<?php
class MyFileObject{
  function __construct($fname){
    $this->filename = $fname;
  }
  function isFile(){
    return is_file($this->filename);
  }
}
$file = new MyFileObject('data.txt');
// $file->filename = 'data.txt';
var_dump($file->isFile());
var_dump($file->filename);

참고

http://php.net/manual/en/language.oop5.decon.php

댓글

댓글 본문
작성자
비밀번호
  1. 이해
    이 코드로 보면 더 이해가 빠른거같아요 ㅠㅠ
    파일을 자꾸 생성하는 코드는 이해가 어려웠는데 아래꺼 보고 바로 이해됬습니다.

    출처 : https://code.i-harness.com......4e6

    class Person {

    public $name = '';

    public function __construct( $name ) {
    $this->name = $name;
    }

    }

    $person = new Person( "Joe" );
    echo $person->name;
  2. 언떼드
    안녕하세요..
    vscode 에디터를 사용중인데 __construct 는 인텔리센스기능이 안되는건가요-.-;;;
    php 인텔리센스 , php extension 확장팩 2개설치했는데
    __construct 는 안나와서 물어봅니다 구글링 실력이 부족해서 못찾고 글남겨봅니다.

    그리구 강의 잘보고있어요.. 많은도움이 됐습니다 ^^ 감사합니다.
  3. 부에레스아이노스
    성공적인 웹 프로그래밍 php와 mysql "개정 5판 php7 coverage", 루크웰링, 로라톰슨 지음, 심재철 옮김.
    을 참조하면 객체지향 부분인 221page에 이렇게 나와있습니다.

    현재 클래스에 $attribute라는 속성이 있다면 이 속성을 $this->attribute로 참조하여 클래스 내부에서 사용할 수 있다.
    이것을 설정하는 방법은
    ----------------------------------------------------------------------------------------------------------------------------------------------------
    class classname
    {
    public $attribute;
    function operation($param)
    {
    $this->attribute =$param;
    echo $this->attribute;
    }
    }
    ----------------------------------------------------------------------------------------------------------------------------------------------------

    이 강의의 예를 들자면 이렇게 하는 거겠죠
    ----------------------------------------------------------------------------------------------------------------------------------------------------
    <?php
    class MyFileObject{
    public $filename; <-------------------이부분이 추가되어야 할 것 같네요
    function __construct($fname){
    $this->filename = $fname;
    }
    function isFile(){
    return is_file($this->filename);
    }
    }
    $file = new MyFileObject('data.txt');
    // $file->filename = 'data.txt';
    var_dump($file->isFile());
    var_dump($file->filename);
    ----------------------------------------------------------------------------------------------------------------------------------------------------

    꼭 저렇게 해야하는지는 모르겠지만 책의 내용으로 볼때 클래스 내부 속성값을 설정하고 사용한다 라고 되어있습니다.

    저도 질문보면서 강의를 계속 반복하여 들었고 그 부분의 설명이 조금 적길래 책과 함께 찾아보니 저런게 있었습니다. 좋은 질문에 저도 많은 도움받고 갑니다.
    대화보기
    • Hyung Jun Choi
      생성자가 좋은 이유는 인스턴스의 생성과 초기화를 동시에 할 수 있다는 것같습니다 ㅎㅎ
    • woejdl
      MyFileObject라는 클래스에 filename필드 자체가 없는데 MyFileObject 내부 메소드에서 filename을 사용하는 것이 어떻게 가능한건지 잘 이해가 안되네요ㅜㅜ
    • treehouse
      인스턴스,클래스,메소드 등.. 어려웠다
      하지만 여기까지다-
    • David Sun
      잘봤습니다.
    • dufuqsls
      잘봤습니다.,
    • Frank
      고맙습니다~
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기