PHPの擬似オーバーロードの使用

*文
リリース: 2023-03-18 14:36:01
オリジナル
1285 人が閲覧しました

PHP 擬似リロードの使用方法?弱く型付けされた言語の場合、PHP 関数のオーバーロードは一般的な OOP とは異なります。弱い型は本質的に区別されていないため、これらを介して実装することはできません。この記事では、PHP で擬似オーバーロードを実装する方法を紹介します。これがすべての人に役立つことを願っています。

関数のオーバーロード - 疑似オーバーロードの代替手段として、以下の具体的なコード例を見てみましょう。

<? php
//函数重载的替代方法-伪重载
//
//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?

function testOne ( $a ) {
 echo (&#39; 一个参数就这样 &#39;);
}

function testTwo ( $a ,  $b ){
 echo (&#39; 两个参数的就这样 &#39;);
}

function testThree ($a,  $b,  $c ) {
 echo (&#39; 黑黑,这是三个参数的 &#39;);
}

function test () {
 $argNum  =  func_num_args ();
  // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
 for ( $i  =  0 ; $i  <  $argNum ; $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 ( &#39; 这是没有参数的情况 &#39; );
   break ;
 }
}
test();
echo ( &#39; &#39; );
test( 1 );
echo ( &#39; &#39; );
test( 1 , 2 );
echo ( &#39; &#39; );
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 ;
 }
}
?>
ログイン後にコピー

関連する推奨事項:

PHP のオーバーロードされたメソッド __call()

PHP のオーバーロード

PHP関数の基本構造

以上がPHPの擬似オーバーロードの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート