現在の位置: ホーム> 最新記事一覧> PHPの過負荷とアプリケーション分析に関する基本的な知識の概要

PHPの過負荷とアプリケーション分析に関する基本的な知識の概要

gitbox 2025-06-28

PHPリロードとは何ですか

PHPは動的な型型言語です。つまり、変数はスクリプトを実行するときに事前定義されたタイプを必要としません。また、関数にはパラメータータイプまたは返品タイプも持たないことを意味します。 PHPの過負荷とは、実行時にクラスのプロパティと方法を動的に作成または変更することを指します。

PHPは、2つの主要なオーバーロードフォームをサポートしています。

1。属性オーバーロード:マジックメソッド__get()および__set()を使用して、クラスのプロパティに動的にアクセスまたは設定できます。

2。メソッドオーバーロード:魔法の方法__call()および__callstatic()を使用して、クラスメソッドを動的に呼び出すことができます。

プロパティの過負荷

__get()メソッド

存在しないプロパティにアクセスするとき、 __get()メソッドが呼び出されます。この魔法の方法により、プロパティを動的に追加できます。

 
class Test {
  private $data = [
    'name' => 'Tom',
    'age' => 18
  ];

  public function __get($name) {
    if (isset($this->data[$name])) {
      return $this->data[$name];
    }
    return null;
  }
}

$test = new Test();
echo $test->name;  // 出力 Tom
echo $test->age;   // 出力 18
echo $test->gender;  // 出力 null

__get()メソッドは、パラメーター$ name 、つまり属性名を受け入れます。プロパティが存在しない場合、 nullが返されます。

__set()メソッド

値を未開発のプロパティに割り当てるとき、 __set()メソッドがトリガーされます。この魔法の方法により、属性とその値を動的に追加できます。

 
class Test {
  private $data = [];

  public function __set($name, $value) {
    $this->data[$name] = $value;
  }
}

$test = new Test();
$test->name = 'Tom';
echo $test->name;  // 出力 Tom

__set()メソッドは、 $ name (属性名)と$ value (属性値)の2つのパラメーターを受け入れます。

メソッドオーバーロード

__call()メソッド

存在しないメソッドが呼び出されると、 __call()メソッドが呼び出されます。この魔法の方法では、方法を動的に追加できます。

 
class Test {
  public function __call($name, $arguments) {
    if ($name == 'add') {
      return array_sum($arguments);
    }
    return null;
  }
}

$test = new Test();
echo $test->add(1, 2, 3);  // 出力 6
echo $test->subtract(10, 2);  // 出力 null

__CALL()メソッドは、 $ name (メソッド名)と$引数(メソッドパラメーター)の2つのパラメーターを受け入れます。メソッドが存在しない場合、 nullが返されます。

__CallStatic()メソッド

存在しない静的メソッドが呼び出される場合、 __callstatic()メソッドが呼び出されます。この方法は、静的メソッドで使用されていることを除いて、 __call()メソッドに似ています。

 
class Test {
  public static function __callStatic($name, $arguments) {
    if ($name == 'add') {
      return array_sum($arguments);
    }
    return null;
  }
}

echo Test::add(1, 2, 3);  // 出力 6
echo Test::subtract(10, 2);  // 出力 null

__callstatic()メソッドは__call()メソッドに似ていますが、静的メソッドにのみ適用されます。