ホームページ  >  記事  >  バックエンド開発  >  クラス外の独立したカスタム関数とクラス内の静的メソッドの違いは何ですか?

クラス外の独立したカスタム関数とクラス内の静的メソッドの違いは何ですか?

WBOY
WBOYオリジナル
2016-06-23 14:21:561029ブラウズ

function test(){	………	return $result;	}function test1(){	………	return $result;	}……function testN(){	………	return $result;	}class funs{	static function test(){		………		return $result;		}	static function test1(){		………		return $result;		}	……	static function testN(){		………		return $result;		}}$a = test();$b = funs::test()……




クラスの外で書かれた別個の関数とクラス内で書かれた静的関数の違いは何ですか?クラス外の関数は静的ですか?チュートリアルで述べたように、静的メソッドはメモリも節約しますか?効率を比較するならどちらが高いでしょうか?

よく使用される関数をクラスに記述し、静的メソッドとして定義することは有益ですか?

初心者なので、経験者からの正しいアドバイスをお願いします!


ディスカッションへの返信(解決策)

php5.3の制約により、静的メソッドは静的プロパティにしかアクセスできません
そうすると、静的メソッドと通常の関数には大きな違いはありません
実は、この奇妙な書き方
もちろん、区別するために異なるクラスが同じ名前の静的メソッドを定義できるという人もいます
しかし、名前空間はこの目的を達成するために使用されます

PHP の行の原則によると? php 毎回大丈夫ですか? クラスの外に書かれた関数が最初に走査され、クラス内に書かれた関数が走査されないことがありますが、これからは外部関数よりも静的カプセル化の方が高速になると感じています。現在推奨されているので、それをお勧めします 関数をクラスにカプセル化して静的メソッドにする


少なくともすべてのメソッドがクラスにカプセル化され、次のような静的メソッドになります。

class abc{

public static function ff($ a){
echo $a; }
}
abc::ff('23');

まあ、関数を全部クラスに入れて書くと良い気がしますそれらを静的にすると、ファイルに関連するすべての関数をファイルクラスに置くなどの規則的な感じが得られ、使用時に自動的に __autoload を呼び出すことができます。手動で含める必要はありません

ただし、私は持っています。多くのよく知られたプログラムを見ても、この方法では実行できません。笑質問によっては、質問するよりも自分で見つけてテストする方がはるかに印象深いものもあります。


function test(){	………	return $result;	}function test1(){	………	return $result;	}……function testN(){	………	return $result;	}class funs{	static function test(){		………		return $result;		}	static function test1(){		………		return $result;		}	……	static function testN(){		………		return $result;		}}$a = test();$b = funs::test()……

クラス外で書かれた個々の関数とクラス内で書かれた静的関数の違いは何ですか?クラス外の関数は静的ですか?チュートリアルで述べたように、静的メソッドはメモリも節約しますか?効率を比較するならどちらが高いでしょうか?


よく使用される関数をクラスに記述し、静的メソッドとして定義することは有益ですか?

初心者なので、経験者からの正しいアドバイスをお願いします!

プログラミングの考え方の変化、違いはありません

私の意見は Lao Xu の意見に近く、名前空間はトレンドです
一部のスクリプト解析言語は名前空間の処理が (相対的に) 遅いというだけですが、私は将来的には改善されると思います

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。