inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

PHP 7+ 프로그래밍: 객체지향

03 - 정적 메서드와 늦은 정적 바인딩 (Static)

Context에 대해서 궁금한게 있습니다

262

석ᄃᄀ

작성한 질문수 3

0

안녕하세요 궁금한게 있습니다
 
static::who메소드를 호출하는 부분에서 부모 Class 또는 자식 Class에 static::(임의의 메소드)가 없으면 부모 또는 자식에서 메소드를 찾는건가요?
왜냐하면 아래 코드 실행 결과가 이렇게 나왔습니다
 
string(5) "A Foo" string(5) "B Foo" string(1) "B"
 
 
class A
{
    public static function foo()
    {
        var_dump('A Foo');
        static::who();
    }
    public static function who()
    {
        var_dump(__CLASS__);
    }
}
 
class B extends A
{
    public static function test()
    {
        self::foo();
    }
    public static function who()
    {
        var_dump('B Foo');
        var_dump(__CLASS__);
    }
}

$b = new B();
$b->test();
 
 

static self oop php context

답변 1

2

정상우

안녕하세요. 답변이 늦어 죄송합니다. 코드를 살펴보죠.

일단, 상속에서 자식클래스에서 찾을 수 없는 경우에는 부모클래스에서 찾는게 기본적인 동작이라고 보시면 됩니다. 그 예로 B::test() 에서 self::foo() 를 시도하였으나 찾지못하였기 때문에 부모의 A::foo() 를 호출(A Foo)하였습니다.

A::foo() 에서 static::who() 를 호출, 그러나 A 가 아닌 B Foo 가 나온 것은 Static Context 의 경우 Lazy 하게 동작하기 때문입니다. 따라서 A::who() 가 아닌 B::who() 가 호출되었습니다. 만약 static::who() 가 아니라 self::who() 였다면 A::who() 가 호출되었을 것입니다. 이 과정에서 따라  B::test()->A::foo()->B::who() 가 호출되었으므로 출력은 A Foo, B Foo, B 순서로 나오게됩니다.

0

석ᄃᄀ

정확한 답변 감사드립니다 선생님 강의 잘 보고 있습니다 : )

패케지스트를 하지 않고 섹션7을 수행할수 있나요

0

90

1

나만의 프레임워크 작성 후, 운영환경 배포에 관한 문의 드려요

0

401

1

35강 미들웨어에서 인증 과정을 Auth클래스로 만들면, 어느 디렉토리에 둘까요?

0

335

1

ios환경에서는 어떻게 설치해야 하나요?

0

448

1

라라벨(php) 배포 문의

0

1652

1

왜 http://localhost/ 로 접근하면 public/index.php 가 실행되나요?

0

2102

1

http://localhost:8080/posts/1 접근시 배열 0값 표기 오류

0

397

1

xdebug 설치

0

668

1

localhost 경로

0

441

1

class not found

1

328

1

namespace class not found 질문

0

466

1

csrfmiddelware 에러 질문입니다

0

363

2

url Parttern Parts 가 무슨뜻인가요?

0

349

1

통합 개발환경 (IDE) 관련 문의

0

248

1

Route 클래스 질문이 있습니다!

0

297

1

모델 User 등에서 속성들을 protected 나 private 으로 설정하지 않는 이유가 있습니까?

0

340

1

안녕하세요 프로젝트를 react와 연동하기에 대해서 여쭈고 싶습니다 :)

1

1377

1

DatabaseSessionHandler.php 에러 해결 부분

0

299

1

안녕하세요. 라우터 서버 연결 질문이 있습니다.

1

281

1

아니 강사님 왜 자꾸 어어 거려요? 진짜 겁나 거슬려 죽겠네 ㅡㅡ 어좀 적당히해요 거슬려 죽겠네 그리고 마이크 좀 좋은거 쓰세요 볼륨이 낮아졌다 커졌ㄷ ㅏ하고 발음도 다뭉개져지고 딕션도 안 좋아서 하나도 안들려요 진짜 개짜증나네

1

573

2

로컬환경에서 개발 후 운영환경으로 배포 시 발생하는 이슈에 대한 문의입니다.

1

575

2

DatabaseSessionHandler 클래스의 gc($maxlifetime) 메소드에 대해 질문드립니다.

2

259

1

Xdebug 설치 후 php index.php 실행하면 오류가 납니다..!

0

1135

1

CentOS 7.* 서버쪽으로 배포를 해보던 중에 질문드립니다.

1

371

1