2012-02-02 4 views
4

저는 PHP를 연구하고 배우기 시작했습니다. 나는 Java에서 알맞은 배경을 가지고 있으며 몇 가지 상관 관계를 도출하려고합니다. PHP에서 본 완전히 익숙하지 않은 기호 중 하나는 "객체 액세스 분리 자 (object access seperator)"였습니다. ->은이 예에서 본 : I가 연구 한 것과PHP 화살표, Java 동급

<?php 
    class SimpleClass 
    { 
      // property declaration 
      public $var = 'a default value'; 

      // method declaration 
      public function displayVar() { 
       echo $this->var; 
      } 
    } 
    ?> 

는, 상기 개체 액세스 세퍼레이터 자바 사용한 점 표기법 동등 것으로 보인다. 예를 들면 다음과 같습니다.

public class SimpleClass 
    { 
    // property declaration 
    public String val = "a default value"; 

    // method declaration 
    public void displayVar() 
    { 
     System.out.println(this.val); 
    } 
} 

안전한 가정입니까? 이 연산자를 추가로 사용합니까?

답변

2

아니, 다른 사용 ...

http://ca.php.net/manual/en/language.oop5.basic.php

는 또한 :: 연산자는 클래스의 정적 멤버에 액세스하는 데 사용되는 점에 유의

http://ca.php.net/manual/en/language.oop5.paamayim-nekudotayim.php

+0

나를 혼란 시켰던 :: 연산자에 대한 추가 노트를 보내 주셔서 감사합니다 –

+1

@ kmb385 : Paamayim Nekudotayim이라는 이름은 정말 혼란 스럽습니다. 첫 번째로 좋은 글을 썼습니다. –

+0

@Niklas Baumstark 와우는 직관적 인 이름입니다. http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php –

1

는 PHP는 구문을 빌려 C++에서 Java와 같은 많은 객체. C++은 객체 포인터를 참조 할 때 해당 객체 접근자를 사용합니다. 비 포인터 객체 변수는 점 표기법을 사용합니다. Java가이 구문을 빌리지 않은 이유는 C++ 객체 포인터와 같은 모든 Java 객체가 힙에 만들어지기 때문에 Java에서 객체를 만들 수있는 유일한 방법이 있기 때문입니다.