検索
ホームページphp教程php手册PHP5 をはじめてみる (2)

php5

抽象クラス

抽象クラスはインスタンス化できません。
抽象クラスでは、他のクラスと同様に、変数とメソッドを定義できます。
抽象クラスは抽象メソッドを定義することもできます。抽象クラスのメソッドは実行されませんが、その派生クラスで実行される可能性があります。

例 6: 抽象クラス

abstract class foo {
protected $x;
abstract function display();
function setX($x) {
$this->x = $x;
}
}
class foo2 extends foo {
function display() {
// Code
}
}
?>

__call

PHP5 オブジェクトは特別なメソッド __call() を追加しました、このメソッドが使用されます 他のメソッドを監視しますオブジェクトの中で。オブジェクトに存在しないメソッドを呼び出そうとすると、__call メソッドが自動的に呼び出されます。

例 7: __call

class foo {
function __call($name,$arguments) {
print("電話しましたか? $name です!");
}
} $ x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
この特別なメソッドを使用して、「オーバーロード」アクションを実装できます。パラメーターを確認し、プライベート メソッドを呼び出して渡します。

例 8: __call を使用して「オーバーロード」アクションを実装する

class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int) ($arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
}
} プライベート関数 foo_for_int($x) {
print("ああ int!");
} プライベート関数 foo_for_string($x) {
print("ああ 文字列!");
}
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>

__set と __get

これは素晴らしいメソッドです、__set と __get メソッドオブジェクトに存在しない変数やメソッドをキャプチャするために使用できます。

例 9: __set と __get

class foo {
function __set($name,$val) {
print("こんにちは、$name に $val を入れようとしました");
}
function __get($name) {
print("$name を要求しました");
}
}
$x = new foo();
$x->bar = 3;
print($x- > ;winky_winky);
?>

型の指示

PHP5 では、オブジェクトのメソッドで、そのパラメーターが別のオブジェクトのインスタンスである必要があることを指定できます。

例 10: 型の表示

class foo {
// コード ...
}
class bar {
public function process_a_foo(foo $foo) {
// 一部のコード
}
}
$b = new bar();
$f = new foo();
$b->process_a_foo($f);
?>
パラメーター名の前にオブジェクトを明示的に指定できることがわかります。 PHP5 は、このパラメータがオブジェクト インスタンスであることを認識します。


静的メンバー

静的メンバーや静的メソッドは、オブジェクト指向プログラミングの用語では「オブジェクトメソッド(クラスメソッド)」「オブジェクト変数(クラス変数)」と呼ばれます。
「オブジェクトメソッド」は、オブジェクトがインスタンス化される前に呼び出すことができます。同様に、「オブジェクト変数」は、オブジェクトがインスタンス化される前に (オブジェクトの制御にオブジェクトのメソッドを使用せずに) 独立して制御できます。

例 11: オブジェクトのメソッドとオブジェクト変数

class calculator {
static public $pi = 3.14151692;
static public function add($x,$y) {
return $x + $y
; }
}
$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>

例外処理

例外処理はプログラム エラーを処理するための理想的な方法として認識されているこの概念は、Java と C++ の両方にあります。PHP5 にこのアプリケーションがすでに追加されていることを嬉しく思います。 「try」と「catch」を使用してプログラム エラーを制御してみることができます。

例 12: 例外処理

class foo {
function dive($x,$y) {
if($y==0) throw new Exception("cannot by zero"); return $x/$y;
}
}
$x = new foo();
try {
$x->divide(3,0);
catch (Exception $e) {
echo $e - >getMessage();
echo "n
n";
// ここに致命的な対策がいくつかあります
}
?>
上の例では、中括弧内のステートメントを実行するために "try" を使用しています。 、エラーが発生した場合、コードは処理のためにエラーを「catch」句に渡します。これにより、「catch」句でエラーが処理のためにオブジェクトに渡されることを指定する必要があります。すべてのエラー メッセージを処理するオブジェクトに渡すことができるので、コード構造がより明確になります。


カスタムエラー処理

カスタム エラー処理コードを使用すると、プログラム内の事故を簡単に制御できます。独自のエラー制御クラスを例外クラスから派生する必要があるだけです。独自のエラー制御クラスには、コンストラクターと getMessage メソッドが必要です。以下にその例を示します。

例 13: カスタム エラー処理

class WeirdProblem extends Exception {
private $data;
function WeirdProblem($data) {
parent::Exception();
$this->data = $ data;
}
function getMessage() {
return $this->data . " 奇妙な例外が発生しました!";
}
}
?>
これで、 "throw new WeirdProblem($foo) " を使用できるようになりましたエラーハンドラーをスローします。「try」コードブロックでエラーが発生した場合、PHP5 は自動的にエラーを「catch」部分に渡して処理します。


名前空間

名前空間は、クラスや関数をグループ化するのに役立ちます。関連するクラスや関数をグループ化して、後で簡単に呼び出すことができます。

例 14: 名前空間

namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
} $m = new Math::Complex();
?>
実際のアプリケーションでは、同じ名前で 2 つ以上のオブジェクトを宣言する必要がある場合があります。 、その後、それらを異なる名前空間に置くことができます (ただし、インターフェイスは同じである必要があります)。

翻訳者注: この記事は PHPbuilder からのものです。上記のテキストから、PHP5 にいくつかの優れた新機能が追加されたことを嬉しく思います。また、PHP5 はまだ正式にリリースされていませんが、PHP 愛好家全員にさらなる驚きをもたらすことを期待しています。この側面に興味のある友人は、PHP 公式ニュース グループにログインして更新情報を知ることができます。ニュース グループのアドレスは、news://news.php.net です。Web インターフェイス http://news.php.net にログインしてアクセスすることもできます。新しいバージョンのリリースを楽しみに待ちましょう。 :) (Beyond PHP Avenger)


注: この記事はオリジナル記事であり、著作権は記事の著者および Beyond PHP Web サイトに帰属し、このサイトの許可なく商業的に複製することは禁止されています。非営利サイトや個人サイトに転載する場合は出典を明記してください



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

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

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

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