検索
ホームページphp教程php手册メソッドのオーバーロード(書き換え)/メソッドカバレッジ、マジック関数の実装


メソッドのオーバーロード
関数名が異なります。関数の数やパラメータの型が異なるため、同じ関数名を呼び出すことができますが、異なる関数を区別できます
class A{
public function test1(){
echo "test1" ;}
public function test1($a){
echo "test1 haha​​";}
}


オーバーロード
$a=newA();
$a->test1();
$a->test1(222);

上記の使用法は間違っています

マジック関数メソッドのオーバーロード実装

class A{
public function test1($p){
echo "1つのパラメータを受け入れる";}
public function test1($p){
echo "2つのパラメータを受け入れる";}
}
は__call
__callを提供しますメソッドを呼び出すオブジェクトで、そのメソッドが存在しない場合、システムは自動的に __call
function __call($method,$p){

を呼び出します

var_dump($p);
if($method=="test1"){
if(count($p)==1){
$this->test1($p);
}else if(count ($p)==2){
$this->test2($p);
}
}
}

$a=newA();
$a->テスト(1);
$a->テスト(1,2);


マジック関数
__set、__get、__construct、__destruct、__call、__isset、__unset

__LINE__ 出力行数
、__FILE__ 出力ファイル名
、__DIR__、
__CLASS__ 出力クラス名


メソッド書き換え/メソッド上書き(オーバーロード)

class Animal{
public $name;
protected $price;
function cry(){
echo "わからない";}

}
クラス Dog extends Animal{
//オーバーライド
function cry(){
echo "puppy";}
}
class Pig extends Animal{
//override
function cry(){
echo "pig" ;}
}

$dog1=新しい犬();
$dog1->泣き();
$pig=1新しい豚();
$pig1->泣き();
?>

書き換えについて:
すべてのサブクラスにメソッドがあることが親クラスでわかっているが、そのメソッドの書き方がわからない場合、サブクラスにこのメソッドをオーバーライドさせることができます
1. 書き換えを実装するには、サブクラスの名前が必要です。そのメソッドのメソッドはパラメーター リストとまったく同じですが、パラメーター名が同じである必要はありません
2. サブクラスが親クラス (public/protected) のメソッドを呼び出す必要がある場合は、parent:: メソッドを使用できます。名前 (パラメータ...)、親クラス名:: メソッド名 (パラメータ...)
3. メソッド カバレッジを実装する場合、アクセス修飾子は異なっていてもかまいませんが、サブクラスのアクセス スコープ >= アクセスを満たす必要があります。親クラスのスコープ


ポリモーフィズムはどこに反映されますか?
サブクラスが親クラスのメソッドをオーバーライドしない場合、$call->cry() は親クラスを呼び出します。 )

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。