[php] PHP 클래스 메소드에서 밑줄로 처리하는 것은 무엇입니까?

다양한 PHP 라이브러리를 살펴보면서 많은 사람들이 다음과 같이 단일 클래스 밑줄로 일부 클래스 메소드를 접두어로 선택한다는 것을 알았습니다.

public function _foo()

…대신에…

public function foo()

나는 이것이 궁극적으로 개인 취향에 달려 있다는 것을 알고 있지만, 누군가 가이 습관이 어디서 왔는지에 대한 통찰력이 있는지 궁금합니다.

내 생각은 클래스 메소드가 “클래스 외부에서이 메소드를 호출하지 마십시오”를 암시하는 방식으로 클래스 메소드가 보호 또는 개인으로 표시되기 전에 PHP 4에서 전달 된 것입니다. 그러나 그것은 아마도 내가 익숙하지 않은 어딘가 (언어)에서 나왔거나 내가 알게되면 이익을 얻을 수있는 좋은 추론이있을 수 있습니다.

모든 생각, 통찰력 및 / 또는 의견을 부탁드립니다.



답변

예전에는 Object Oriented PHP (PHP 4)가 나빴습니다. OO의 구현은 꽤 나빴으며 개인 메소드와 같은 것은 포함하지 않았습니다. 이를 보완하기 위해 PHP 개발자는 밑줄로 개인용으로 작성된 메소드를 소개했습니다. 일부 오래된 수업 /**private*/ __foo() {에서는 추가 무게를주는 것을 볼 수 있습니다.

개발자가 밑줄로 모든 방법을 미리 사용하는 것에 대해 들어 본 적이 없으므로 그 원인을 설명 할 수 없습니다.


답변

Zend Framework가 PSR의 일부이기 때문에 PHP에 대한 이러한 종류의 규칙에 대한 가장 권위있는 소스는 PSR-2 : Coding Style Guide 라고 생각합니다 .

보호 또는 개인 가시성을 나타 내기 위해 속성 이름 앞에 단일 밑줄을 붙여서는 안됩니다.


답변

이제 2013 년에 이것은 PSR-2 코딩 지침에 따라 “공식적으로”나쁜 스타일입니다 .

보호 또는 개인 가시성을 나타 내기 위해 속성 이름 앞에 단일 밑줄을 붙여서는 안됩니다.

출처 : https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md


답변

개인 / 보호 된 키워드를 밑줄로 접두어로 사용하지 않았으므로 개인 / 보호 된 키워드를 사용할 수 있으므로 IDE가 표시합니다.

그리고 나는 여전히 그렇습니다. 그러나 그것이 좋은 습관이 될 수있는 한 가지 이유를 찾았습니다. 공용 메소드를 가지고 addFoo()있고 그 메소드 내부에 다른 메소드와 공통되는 작업의 일부 가 있다고 상상해보십시오 addFooWhenBar(). addFooWhenBaz()…이 공통 메소드의 가장 좋은 이름은 addFoo()이지만 이미 사용되었으므로 이미 일부를 생각해 냈습니다. 추악한 이름은 addFooInternal()or addFooCommon()또는 …이지만 _addFoo()개인 방법은 가장 좋습니다.


답변

선행 밑줄은 일반적으로 개인 속성 및 방법에 사용 됩니다. 내가 일반적으로 사용하는 기술은 아니지만 일부 프로그래머에게 인기가 있습니다.


답변

개인 메소드를 위해 작성한 PHP 5 클래스에서 밑줄을 사용합니다. 특정 클래스 멤버가 비공개라는 것은 개발자에게 작은 시각적 신호입니다. 이 유형의 힌트는 공용 및 개인 구성원을 구별하는 IDE를 사용할 때 유용하지 않습니다. 나는 C # 일에서 그것을 집어 들었다. 오래된 습관 …


답변

나는 당신의 원래 가정이 맞았다 고 생각합니다. 나는 어떤 언어들이 “객체”에 비공개로 유지되어야하는 메소드 / 멤버들에 밑줄을 붙이는 것이 일반적인 관행이라는 것을 알았습니다. 비록 당신이 할 수는 있지만 시각적 인 방법으로, 당신은 이것을 호출해서는 안됩니다!