0

クラスがあるとしましょう:

class test {
    public static function sayHi() {
        echo 'hi';
    }
}

それを呼び出すtest::sayHi();

クラスの外で定義sayHi()したり、クラスを完全に削除したりすることはできますか?

public static function sayHi() {
      echo 'hi';
}

この関数は、スクリプトのコードをカプセル化するためだけに必要です。たぶん答えは静的メソッドではなく、単純な関数定義ですか?

4

2 に答える 2

1

クラスのない静的メソッドはまったく意味がありません。static キーワードは、このメソッドがクラスのすべてのインスタンスで同一であることを示します。これにより、インスタンスの1つではなく、クラス自体で静的に呼び出すことができます。

メソッドの内容が自己完結型である場合、つまりクラスの他の静的変数やメソッドを必要としない場合は、単純にクラスを省略してコードをグローバル メソッドに入れることができます。グローバル メソッドを使用することは、悪い習慣と見なされます。

したがって、私のアドバイスは、クラスにそのメソッドが 1 つしかない場合でも、クラスを維持することです。このようにして、自分でファイルを要求する代わりに、ファイルを自動ロードできます。

于 2017-01-06T23:52:04.910 に答える
0

OOP の関数はデフォルトでパブリックですが、次のようにプライベートに変更できます。

private function test(){
    //do something
}

または、あなたが言ったように、静的に、パブリックまたはプライベートで次のようにします。

private static function test(){
   //do something
}

ただし、OOP を使用していない場合、関数はデフォルトでグローバルおよびパブリックであり、それらのアクセスをプライベートに変更することはできません。タイプをプライベートに変更すると、その機能にアクセスできなくなるため、これは機能するはずの方法ではありません。また、OOPの別のプロパティであるため、 static は機能しません...

次に、その関数を簡単に作成して、必要な場所からアクセスできます (明らかに、どこで利用できるか:P が保存されているファイルを含める必要があるため)

于 2017-01-07T00:44:35.007 に答える