Maison >php教程 >php手册 >php函数重载的替代方法

php函数重载的替代方法

WBOY
WBOYoriginal
2016-06-13 09:05:091141parcourir

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

//函数重载的替代方法-伪重载

//

//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数

//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?

 

function testOne ( $a ) {

echo (' 一个参数就这样 ');

}

 

function testTwo ( $a , $b ){

echo (' 两个参数的就这样 ');

}

 

function testThree ($a, $b, $c ) {

echo (' 黑黑,这是三个参数的 ');

}

 

function test () {

$argNum = func_num_args ();

// 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵

for ( $i = 0 ; $i

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

}

switch ( $argNum ) {

case 1 :

testOne( $_arg_1 );

break ;

case 2 :

testTwo( $_arg_1, $_arg_2 );

break ;

case 3 :

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

break ;

default :

echo ( ' 这是没有参数的情况 ' );

break ;

}

}

test();

echo ( ' ' );

test( 1 );

echo ( ' ' );

test( 1 , 2 );

echo ( ' ' );

test( 1 , 2 , 3 );

 

// 这些只是在函数中的运用,其实最主要的还是在类中的运用

//如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?

 

class test {

var $a = 0 ;

var $b = 0 ;

 

function test () {

$argNum = func_num_args ();

$_arg = func_get_args ();

switch ($argNum ) {

case 1 :

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

break ;

case 2 :

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

break ;

default :

$this -> a = 0 ;

$this -> b = 1 ;

break ;

}

}

 

function test1 ($a) {

$this -> a = $a ;

}

 

function test2 ($a, $b) {

$this -> a = $a ;

$this -> b = $b ;

}

}

?>

  以上所述就是本文的全部内容了,希望大家能够喜欢。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn