web-dev-qa-db-ja.com

CodeIgniterのパブリック関数と関数

PHPでは、クラス内でメソッドを宣言することの違いは何ですか

public function VS function

例えば:

public function contact()
{
    $data['header'] = "Contact";
    $this->load->view('admin/admin_contact', $data);
}

VS

function contact()
{
    $data['header'] = "Contact";
    $this->load->view('admin/admin_contact', $data);
}

public functionまたはfunctionを使用する方が良いのでしょうか?その理由は?

24
Derfder

明示的な可視性キーワードで宣言されたメソッドがベストプラクティスです。見た目も肌触りも良く、人を混乱させません。

  • ほとんどのPHP5コーディング規約(Zend、Symfonyなど)では、publicキーワードが必要なので、おなじみです。
  • つまり、変数とメソッドの宣言は同じ構文を使用します。
  • これはより明示的であり、開発者はメソッドの可視性を考慮する必要があります。
12
sas

PHP.net によると

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

ベストプラクティスとして、可視性キーワードを使用することをお勧めします(より高いバージョンのPHPを使用する場合はesp)。 (今のような)混乱を防ぎ、コーディングの標準的な実践を促進します。

15
Joseph

これら2つの間に違いはありません。どちらも同じです。 codeigniterではどちらも同じ意味を持ち、関数名の前に '_'を付けない限り、標準のURIタグを使用して呼び出すことができます_fname()は呼び出されません

4
romoti

それらは同じものです。可視性メソッド/関数を指定しない場合、publicとして宣言されます。

明示的な可視性キーワードなしで宣言されたメソッドはパブリックとして定義されています

ドキュメントはこちら から

3
Manse

ベストプラクティスが本当に必要な場合は、常にpublicを使用します。しかし、codeigniterフレームワークの場合、それをパブリックに宣言するかどうかにかかわらず、それはまとまりません。コントローラーをプライベートにしたい場合は、プライベートを使用しないでください。ただし、コントローラー名の前にアンダースコア(_)を使用すると、コントローラーが表示されなくなります。

1
Bananenspin
  • 両方の宣言は同じであり、両方の関数はcodeigniterのURIリクエストで使用できます
  • メソッドがユーザーによって呼び出されないようにするには、プライベートまたは保護されたアクセス指定子を使用します。
0
jerrytom