ホームページ  >  記事  >  バックエンド開発  >  PHP 関数のオーバーロードの代替_PHP チュートリアル

PHP 関数のオーバーロードの代替_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:54:38923ブラウズ

PHP 関数のオーバーロードの代替手段

弱く型付けされた言語の場合、PHP 関数のオーバーロードは一般的な OOP とは異なります。弱い型は本質的に区別されていないため、これらを介して実装することはできません。ただし、次の方法で単純な擬似オーバーロードを実現できます。

関数のオーバーロードの代替 - 疑似オーバーロード 具体的なサンプルコードを見てみましょう。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

//関数のオーバーロードの代替 - 擬似オーバーロード

//

//確かに、PHP には関数のオーバーロードの概念がないため、多くの場合、一部の処理を実行できなくなり、関数の背後で N 個のパラメーターを定義しなければならない場合もあります

//これら 3 つの関数、func_get_arg、func_get_args、および func_num_args を見たときに、何か思いつきましたか?

関数 testOne ( $a ) {

echo (' パラメーターが 1 つだけ ');

}

関数 testTwo ( $a , $b ){

echo ('2 つのパラメータについては以上です');

}

関数 testThree ($a, $b, $c) {

echo (「ヘイヘイ、これは 3 つのパラメータです」);

}

機能テスト() {

$argNum = func_num_args ();

// このセクションでは、実際に $_arg = func_get_args() を使用してすべてのパラメータを取得できますが、配列を使用する必要があるため、以下で表現するのは不便です、笑

for ( $i = 0 ; $i < $argNum ; $i ++ ) {

$_arg_ { $i } = func_get_arg ( $i );

}

スイッチ ( $argNum ) {

ケース1:

testOne( $_arg_1 );

休憩;

ケース2:

testTwo( $_arg_1, $_arg_2 );

休憩;

ケース 3:

testThree( $_arg_1, $_arg_2, $_arg_3 );

休憩;

デフォルト:

echo ( 'これはパラメータなしの場合です ' );

休憩;

}

}

テスト();

エコー( ' ' );

テスト(1);

エコー( ' ' );

テスト( 1 , 2 );

エコー( ' ' );

テスト( 1 , 2 , 3 );

// これらは関数内でのアプリケーションにすぎません。実際、最も重要なことはクラス内でのアプリケーションです

//これらがクラスで使用されている場合、コンストラクターに複数のパラメーターがあるかどうかを心配する必要はありませんね?

クラステスト{

var $a = 0 ;

var $b = 0 ;

機能テスト() {

$argNum = func_num_args ();

$_arg = func_get_args();

スイッチ ($argNum ) {

ケース1:

$this -> test1( $_arg [ 0 ] );

休憩;

ケース2:

$this -> test2( $_arg [ 0 ] , $_arg [ 1 ]);

休憩;

デフォルト:

$this -> a = 0 ;

$this -> b = 1 ;

休憩;

}

}

関数 test1 ($a) {

$this -> a = $a ;

}

関数 test2 ($a, $b) {

$this -> a = $a ;

$this -> b = $b ;

}

}

?>

以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/996752.html技術記事 PHP 関数のオーバーロードの代替手段 弱い型指定言語の場合、PHP 関数のオーバーロードは一般的な OOP とは異なります。弱い型は本質的に区別されていないため、これらを介して実装することはできません。でも…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。