“->”PHP 연산자는 무엇이며 코드를 크게 읽을 때 어떻게 말합니까? [닫은]


127

->PHP에서 찾은 이 화살표 표시 연산자 는 무엇입니까 ?

빼기 부호, 대시 또는 하이픈 뒤에 큰 부호 (또는 오른쪽 쉐브론)가옵니다.

큰 소리로 코드를 읽을 때 어떻게 발음합니까?


12
이 질문에 답하기 위해이 질문에 대한 질문과 중복되는 질문으로 폐쇄 된 이유는 무엇입니까?
Ben

1
C ++에서 "->"연산자는 "포인터 멤버"라고하지만 PHP "->"연산자는 실제로 ""에 더 가깝습니다. C ++의 연산자를 "객체 멤버"라고합니다.
user34660

답변:


134

공식 이름은 "객체 연산자" -T_OBJECT_OPERATOR 입니다. 나는 그것을 "화살표"라고 부릅니다.


9
어휘 토큰이 항상 해당 토큰을 참조하는 것은 아닙니다. 예를 들어, ::의 이름은 "scope resolution operator"이지만 해당 기사에는로 표시됩니다 T_DOUBLE_COLON. 투표를 더
받으면

1
"B가 실행되고 급여 A 화살표 C를 반환 한 후"를 읽으면 이상하게 들립니다. A가 C를 가리키는 것과 비슷할 것입니다.
Ben

66
빌리의 말이 맞아, 대부분의 사람들은 캐주얼 한 대화에서 :: a T_PAAMAYIM_NEKUDOTAYIM이라고 부른다
Alan Storm

3
$a->do()"A 's method Do"와 $a->thing"A 's property Thing" 과 같이 말하면 상대적입니다.
Martin Lyne

1
Btw는 T_PAAMAYIM_NEKUDOTAYIM정확히 히브리어로 "이중 콜론"을 의미합니다.
Neta

59

나는 그것을 " 다트 " 라고 부른다 . 에서와 같이 $Foo->bar()"푸 다트 바"

많은 언어가 "점"을 사용 Foo.bar();하기 때문에 한 음절로 사용할 단어를 원했습니다. "화살표"는 너무 오래 감았습니다! ;)

PHP는 .연결에 "점"을 사용하기 때문에 (이유는 무엇입니까?) "점"이라고 안전하게 말할 수 없습니다. 혼동 될 수 있습니다.

한참 전에 동료와 논의하면서, 우리는 "점"과 비슷한 단어로 "다트"를 편하게 흐르지 만 "적어도 말할 때"를 연결하는 "점"으로 착각하지 않을 정도로 명확하게 결정했습니다. .


1
나는 그것을 좋아한다! 당신을 위해 +1. 큰 소리로 말할 때 "다트"가 "점"으로 뭉개 질 위험이 있다고 생각합니다. 너무 나쁜 "화살표"는 아마도 훨씬 더 확고합니다.
Phil Perry

니스, 이것은 내 머리에 가장 많이 사용되는 대답입니다. 당신의 대답에 대한 정당성
Liam

나는 이것을 확실히 기억할 것이다.
Chev

나는 당신이 화살을 말한다면 이해합니다 ... 다트를 언급하면 ​​완전히 잃어 버릴 것입니다
Emeka Mbah

39

PHP 코드를 큰 소리로 읽을 때 "->"연산자를 발음하지 않습니다. 들어 $db->prepare($query);나는 주로 말하는 "DB [짧은 일시 정지] 쿼리를 준비합니다." 그래서 나는 정규 문장에서 쉼표처럼 말을합니다.

Paamayim Nekudotayim ( "::")도 마찬가지입니다.


10
Paamayah whata? jk
ValleyDigital 1

1
그렇지 않으면로 알려진 영역 해결 연산자
CommandZ

1
나는 "콜론 콜론"의 약자로 Paamayim Nekudotayim ( "::") "CoCo"라고 부릅니다
우산

14

나 자신에게 코드를 읽을 때 나는 그것을 "포지티브 한 것"으로 생각한다.

예를 들면 다음과 같습니다.

x->value = y->value

"x의 값은 y의 값과 같다"


9

대부분 @Tor Valamo의 방법 ( "A의 B 방법"또는 "A의 B 방법")에 약간의 변형을 사용하지만 때때로 "점"이라고 말합니다. 예 : "call A dot B ()".


5
나는 항상 "a dot b"라고 말합니다. 왜냐하면 그것은 거의 모든 다른 언어로되어 있기 때문입니다. PHP와 비 PHP 개발자는 항상 나를 이해하는 것 같습니다.
Gareth

1
그러나 대부분의 다른 언어에서 도트 연산자와 동일한 기능을 수행하기 때문에 "dot"로 넘어갑니다. 그렇다면 ->실제 도트 연산자와 다른 기능을 가진 C / C ++에서 무엇을 호출해야 합니까?
meagar

4

속성 연산자.

$a->b()거나 $a->b큰 소리로 말할 때 "$ a obj에서 b를 호출"또는 "$ a에서 / in / of를 얻습니다"라고 말합니다.


1
@Tor, 나는 "방법 연산자"도 생각합니다.
Marcus Adams

@Marcus Adams-실제로 메서드는 대부분의 언어에서 기능이되는 속성 일뿐입니다. 그러나 PHP에서만 큰 차이가 있지만 여전히 속성이라고 부릅니다.
Tor Valamo

4

개인적으로 코드를 구두로 표현하는 것이 장황합니다.

예 :

$foo = new Foo();
echo $foo->bar

다음과 같이 읽을 것입니다 :

foo 객체의 bar 속성을 echo (/ print)합니다.

장황하고 시간이 많이 걸리지 만 코드를 구두로 표현 해야하는 이유가 있다면 정확히 무엇을 의사 소통하고 있는지 분명해야합니다.


네가 나를 잃어버린 것 같아, 토마스. : / 무슨 뜻인가요?
Craige

4

코볼 'in'으로 돌아가서 "a에서 5에서 b로 이동"이라고 말합니다. 오늘날 대부분의 언어는 다른 방향으로 자격을 부여합니다.

그러나 나는 여전히 $a->b();"A에서 전화 b"라고 읽습니다 .


4
$a->b 

나는 "$ a의 매개 변수 b"라고 부릅니다.

$a->b()

"$ a의 함수 b"라고합니다.


3

단일 화살표는 PHP OOP : Member의 의미로 구두로 쉽게 참조 할 수 있습니다. 따라서 $a->var"Object a의 구성원 var"라고 말하면됩니다.

코드를 큰 소리로 읽을 때는 미리 읽어 (미리보기, 미안)하고 실제로 무엇을 말하는지 아는 것이 도움이됩니다. 예를 들어 다음과 같은 코드를 보자.

<?php
  Class MyClass {
    $foo = 0;

    public function bar() {
      return $this->foo;
    }
  }

  $myobject = new MyClass();
  $myobject->bar();
?>

따라서이 코드 블록을 코드 데모로 큰 소리로 읽으면 다음과 같이 말할 것입니다.

"클래스 'MyClass'정의, 열기 괄호. 변수 'foo'는 0과 같고, 라인을 종료합니다. 공용 함수 'bar'열기 괄호, 열기 괄호를 정의하십시오. 오브젝트 'this'의 멤버 변수 'foo'를 리턴하십시오. 닫는 중괄호, 닫는 중괄호 'myClass'의 새 인스턴스 (인수 없음)를 변수 객체 'myobject'로 인스턴스화하고, 종료 라인을 종료합니다. 'myobject'객체의 멤버 메소드 'bar'를 호출하고 라인을 종료하십시오. "

그러나 다른 학생이나 프로그래머가 시각적으로 복사하지 않고 코드를 크게 읽으면 다음과 같이 말합니다.

"PHP 열기 태그 (전체), 줄 바꿈, 들여 쓰기, 클래스 MyClass 열기 중괄호, 줄 바꿈. 들여 쓰기, [ 'dollar-sign'| 'Object-marker'] foo는 0, 세미콜론, 줄 바꿈, 줄 바꿈과 같습니다. 닫는 괄호, 여는 중괄호, 줄 바꿈 들여 쓰기, 반환 [ 'dollar-sign'| 'Object-marker']이 화살표 foo, 세미콜론, 줄 바꿈 반전 들여 쓰기, 닫는 중괄호, 줄 바꿈, 들여 쓰기, 닫는 중괄호 , 줄 바꿈, 줄 바꿈 [ 'dollar-sign'| 'Object-marker'] myobject는 새 MyClass 열린 닫는 괄호, 세미콜론, 줄 바꿈과 같습니다 [ 'dollar-sign'| 'Object-marker'] myobject 화살표 막대 열기 괄호, 세미콜론, 줄 바꿈. 역 들여 쓰기, PHP 닫기 태그. "

[ '달러 기호'가 보이는 곳 | 'Object-marker'], 당신이 '$'에 대해 말하려는 경향이있는 것을 선택하십시오. 저는 두 사람 사이를 자주 전환하며, 청중에 따라 다릅니다.

따라서 요약하면 PHP에서->는 객체의 멤버를 나타냅니다. 변수, 다른 객체 또는 메소드입니다.


1

내가 일하는 선임 PHP 개발자는 "화살표"라고 말합니다.

$A->B;

위의 내용을 입력하라고 말하면 "Dollar A arrow B"또는

$A->B();

"Dollar A 화살표 B 파 렌스."


1

나는 이렇게 할 것입니다 :

//Instantiated object variable with the name mono call property name
$mono->name;

//Instantiated object variable with the name mono call method ship
$mono->ship();

내 책 (에서 PHP 마스터 로나 미첼) 그것이라고 객체 연산자 .


1

일본어는 이것에 편리한 입자를 가지고있다. "아니오"(の). 그것은 대략 "이전의 용어와 관련이있는"을 의미하는 소유 입자입니다.

"프레드 오소리"는 "프레드 오소리"를 의미합니다.

적어도 정신적으로, 그리고 일본어를 이해하는 사람들 사이에서 나는 다음과 같이 읽는 것으로 구별하는 경향이 있습니다.

$A->B(); // "Call $A's B."
C::D();  // "Call C の D."

그러나 일본어를 사용하지 않는 사람들에게는 두 가지를 모두 소유주의 "s"로 읽는 것도 효과가 있습니다. 그것들을 뒤집어서 "of", "D of C"를 사용할 수도 있습니다.하지만 다소 어색하고 선형 흐름을 깨뜨리기 때문에 빠르게 읽는 것은 어렵습니다.

그래도 페어 코딩을하고 입력 할 내용을 제안 할 때 특정 문자를 "대시보다 큰 화살표"와 "더블 콜론"이라고 말합니다 (내가 말하는 사람을 알고있는 경우) PHPophile이기 때문에, 나는 "paamayim nekudotayim double-colon"이라고 부를 수 있습니다.




0

user187291 은 주관적인 질문에 관해서 는 비 주관적인 질문에 대답했습니다. "sub"라고 말합니다. 예를 들어, $x->y이 문맥에서 "x sub y"- "sub" 로 발음 하면 "subscript"가 짧습니다. 이것은 배열 표기법에 더 적합합니다. $x['y']또한 "x sub y"를 발음합니다. 일반적으로 큰 소리로 코드를 읽을 때 다른 개발자가 볼 수있는 줄을 식별하기 위해 내 말을 사용하므로 모호성은 아직 문제가되지 않았습니다. 나는 그 원인이 구조체 / 객체 및 배열을 "컬렉션"으로보고 그 요소가 수학적 표기법으로 첨자 화되어 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.