web-dev-qa-db-ja.com

PHPのクラスメソッドのデフォルトの可視性

manual を見ましたが、答えが見つからないようです。

PHP可視性宣言のないメソッドのデフォルトの可視性は何ですか?PHP Javaのようなパッケージの可視性はありますか?

たとえば、次のコードでは、go()はパブリックですか、プライベートですか?

_class test {
  function go() {
  }
}
_

私が尋ねた理由は、function __construct()public function __construct()として記述された多くのコンストラクタコードを見たことです。それらは同等ですか?

109
Yada

デフォルトはパブリックです。

クラスメソッドは、public、private、またはprotectedとして定義できます。明示的な可視性キーワードなしで宣言されたメソッドは、パブリックとして定義されます。

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

167
Jansen Price

デフォルトはパブリックです。常に含めることをお勧めしますが、PHP4はアクセス修飾子のないクラスをサポートしているため、レガシーコードではこれらのクラスが使用されないことがよくあります。

いいえ、PHPはパッケージの可視性がありません。これは主に最近までPHPにパッケージがなかったためです。

21
Johnco

デフォルトはpublicです。おそらく、古いコードはパブリックであると想定しているため、下位互換性が原因であると考えられます(パブリックでないと機能しなくなります)。

8

デフォルトの可視性はPUBLICです

ソース

6
Sasa

可視性 キーワード(publicprivateまたはprotected)が使用されていない場合、メソッドはpublic。ただし、この方法でプロパティを定義することはできません。 properties の場合、宣言に可視性キーワードを追加する必要があります。

クラスで宣言されていないプロパティの場合、メソッド内で値を割り当てると、パブリックに表示されます。

<?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
    }
}
1
James.Valon

function __construct()public function __construct()は同じメソッド名として機能します。

メソッド名のプレフィックスを定義できなかった場合、デフォルトでパブリックになります。

0
Gazi Anis