[php] PHP에서 클래스 메서드의 기본 가시성

나는 보았다 매뉴얼 ,하지만 난 대답을 찾을 수 없습니다.

가시성 선언이없는 메소드에 대한 PHP의 기본 가시성은 무엇입니까? PHP는 Java와 같은 패키지 가시성을 가지고 있습니까?

예를 들어, 다음 코드에서 go()공개 또는 비공개입니까?

class test {
  function go() {
  }
}

내가 물은 이유는으로 작성된 많은 생성자 코드 function __construct()public function __construct(). 동등합니까?



답변

기본값은 공개입니다.

클래스 메소드는 공용, 개인 또는 보호로 정의 될 수 있습니다. 명시 적 가시성 키워드없이 선언 된 메서드는 공용으로 정의됩니다.

http://www.php.net/manual/en/language.oop5.visibility.php


답변

기본값은 공개입니다. 항상 포함하는 것이 좋지만 PHP4는 액세스 수정자가없는 클래스를 지원하므로 레거시 코드에서 사용되지 않는 것이 일반적입니다.

그리고 아니요, PHP에는 패키지 가시성이 없습니다. 주로 최근까지 PHP에는 패키지가 없었기 때문입니다.


답변

기본값은 공개입니다. 그 이유는 아마도 이전 코드가 공개 될 것으로 예상하기 때문에 이전 버전과의 호환성 때문일 것입니다 (공개가 아니면 작동하지 않을 것입니다).


답변

기본 가시성은 PUBLIC입니다.

출처


답변

가시성 키워드 ( public, private또는 protected)를 사용 하지 않으면 메서드는 public이 됩니다. 그러나 이러한 방식으로 속성을 정의 할 수 없습니다. 들어 속성 , 당신은 선언에 대한 가시성 키워드를 추가해야합니다.

클래스에서 선언되지 않은 속성의 경우 메서드 내에서 값을 할당하면 공개 가시성을 갖게됩니다.

<?php
class Example {
    public $name;
    public function __construct() {
        $this -> age = 9; // age is now public
        $this -> privateFunction();
    }
    private function privateFunction() {
        $this -> country = "USA"; // this is also public
    }
}


답변

function __construct()public function __construct()같은 방법으로 이름으로 작동합니다.

메서드 이름에 대한 접두사를 정의 할 수없는 경우 기본적으로 public이어야합니다.


답변