


PHP オブジェクト指向 - 一般的なオブジェクト指向言語におけるメソッドのオーバーロード (オーバーロード) のシミュレーションに関する詳細な紹介
一般的なオブジェクト指向設計言語(C++、Javaなど)では、メソッドのオーバーロードは、同じメソッド名を定義し、異なる「パラメータの数」または異なる「パラメータの種類」を介してデータにアクセスすることです。同じメソッド名を持つ異なるメソッド。ただし、PHP ではメソッドをオーバーロードできません。これは、PHP が弱い型指定言語であるため、メソッド自体のパラメーターはさまざまな型のデータを受け取ることができ、また PHP メソッドは無限の数のパラメーターを受け取ることができるため、メソッドをオーバーロードすることはできません。また、異なるメソッド名で異なるパラメータ数を使用して異なるメソッドを呼び出すことも当てはまりません。したがって、PHP には従来のオーバーロード メソッドはありませんが、その柔軟性により、PHP は一般的なオブジェクト指向言語のオーバーロード メソッドをシミュレートできます。
PHPで一般的なオブジェクト指向言語におけるメソッドのオーバーロードをシミュレートする
まず例を見てみましょう:
<?php /* 重写/覆盖 override 指:子类重写了父类的同名方法 重载: overload 指:存在多个同名方法,但参数类型/个数不同. 传不同的参数,调用不同的方法。 但是在PHP中,不允许存在多个同名方法。 因此,不能够完成java,c++中的这种重载。 但是,PHP的灵活,能达到类似的效果 */ //在PHP中模拟重载的方法 class Calc { public function area() { //求面积 // 判断一个调用area时,得到的参数个数 $args = func_get_args(); if(count($args) == 1) { //只有一个参数 return 3.14 * $args[0] * $args[0]; //求圆的面积 } else if(count($args) == 2) { //有2个参数 return $args[0] * $args[1]; //求矩形的面积 } else { return '未知图形'; } } } $calc = new Calc(); // 计算圆的面积 echo $calc->area(10),'<br />'; // 计算矩形的面积 echo $calc->area(5,8); ?>
PHPのオーバーロード技術を使用して一般的なオブジェクト指向言語を実装するメソッドのオーバーロード(オーバーロード)
次の例では、PHP のオーバーロード (オーバーロード) テクノロジを使用し、マジック メソッドを使用して従来のメソッドのオーバーロード (オーバーロード) を実装します。
PHP のオーバーロード技術については、以下を参照してください: PHP オブジェクト指向_overloading (オーバーロード)
例:
<?php/* 目标:设计一个类,这个类的实例,可以实现如下需求: 调用方法f1: 传入1个参数,就返回其本身, 传入2个参数,就求其平方和, 传入3个参数,就求其立方和, 其他参数形式,会报错! */class A{ //这是一个魔术方法,在A的对象调用不存在的方法时 //会被自动调用来应对这种情况 function call($Func_name, $argument){ //使用f1不存在的情况 if($Func_name === 'f1'){ $len = count($argument); //获得实参的个数 if($len<1 || $len>3){ trigger_error("参数数量有误!", E_USER_ERROR); }else if($len == 1){ return $argument[0]; }else if($len == 2){ return $argument[0]*$argument[0] + $argument[1]*$argument[1]; }else if($len == 3){ $v1 = $argument[0]; $v2 = $argument[1]; $v3 = $argument[2]; return $v1*$v1*$v1 + pow($v2, 3) + pow($v3, 3); } }else if($Func_name === 'f2'){ //另一个不存在的方法 }else if($Func_name === 'f3'){ //...... } } }$a = new A();$v1 = $a->f1(1);$v2 = $a->f1(2,3);$v3 = $a->f1(4,5,6);echo "v1= $v1, v2 = $v2, v3 = $v3";?>
実行結果は次のとおりです:
v1= 1, v2 = 13, v3 = 405
以上がPHP オブジェクト指向 - 一般的なオブジェクト指向言語におけるメソッドのオーバーロード (オーバーロード) のシミュレーションに関する詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
