ホームページ バックエンド開発 PHPチュートリアル PHP オブジェクト指向の概念と例_PHP チュートリアル

PHP オブジェクト指向の概念と例_PHP チュートリアル

Jul 13, 2016 pm 05:12 PM
php そして について 物体 記事 持っている 友人 コンセプト 単純 のために

PHP オブジェクト指向の概念と例に関する簡単な記事。必要な友人は簡単に参照できます。

キーワードと特殊変数
新しい、クラス、拡張します。この3つは誰もが知っています。
::、範囲解決演算子 (Paamayim Nekudotayim とも呼ばれます)、またはより単純にはコロンのペアを使用して、静的メンバー、メソッド、および定数にアクセスできます。クラス内のメンバーやメソッドをオーバーライドするためにも使用できます。
親と自分。 parent は、extends 宣言内の派生クラスが指す基本クラスの名前を参照します。これを行うと、複数の場所で基本クラス名を使用することがなくなります。
$this 疑似変数。 $this は現在のインスタンスを指します。 $this は、必ずしもメソッドが属するオブジェクトであるとは限りません。クラス A 内のコードがクラス B の静的メソッドを呼び出すことがあります。参考例:php.net/manual/zh/ language.oop5.basic.php">http://www.php.net/manual/zh/ language.oop5.basic.php
静的なキーワード。クラス メンバーまたはメソッドを静的として宣言すると、クラスをインスタンス化せずに直接アクセスできます。ただし、静的メソッドを除き、オブジェクトを介して静的メンバーにアクセスすることはできません。静的メソッドでは、$this は使用されません。代わりに self:: を使用してください。
最後のキーワード。これはクラスと関数で使用できるため、クラスを継承したりメソッドをオーバーライドしたりすることはできません。
プロパティ
初期化できますが、初期化された値は定数である必要があります。 const キーワードは定数の前に使用します。定数の値は固定値である必要があり、変数、クラス属性、またはその他の操作 (関数呼び出しなど) の結果にすることはできません。

コンストラクターとデストラクター
これら 2 つの関数はいずれも、基本クラスの応答関数を秘密裏に呼び出すことはありません。これは、Java のコンストラクター メカニズムとは異なります。この効果を実現するには、実行を表示する必要があります。デストラクターでは例外をスローできません。

抽象クラス: 抽象として宣言されたクラス メソッドには具体的な実装を含めることはできず、抽象クラスはインスタンス化できません。最初に継承してから、そのサブクラスをインスタンス化する必要があります。さらに、サブクラスのアクセス制御は、抽象クラスのアクセス制御と同じか、より緩和する必要があります。抽象クラスには、少なくとも 1 つの抽象メソッドが含まれます。

インターフェース
インターフェイスを使用すると、メソッドの特定の内容を定義せずに、クラスが実装する必要があるメソッドを指定できます。
定義されたすべてのメソッドはパブリックで空である必要があります
定数は定義できますが、属性はありません
インターフェイスの実装はすべてのメソッドを実装する必要があり、複数のインターフェイスを実装できます (メソッドは同じ名前を持つことができないことに注意してください)。
インターフェースは他のインターフェースに継承(拡張)できます

コードは次のとおりです コードをコピー


/*
* ユーザーインターフェースを定義します。
* およびサブクラス NormalUser、VipUser、InnerUser
*/
// ユーザー インターフェイスは 3 つの抽象メソッドを定義します。
インターフェース ユーザー{
パブリック関数 getName();
パブリック関数 setName($_name);
パブリック関数 getDiscount();
}
抽象クラス AbstractUser は User{
を実装します プライベート $name = "" //名前
; protected $discount = 0 //割引
; protected $grade = "" //レベル
;
パブリック関数 __construct($_name){
$this->setName($_name);
}
パブリック関数 getName(){
$this->name;
を返します }
パブリック関数 setName($_name){
$this->name = $_name;
}
パブリック関数 getDiscount(){
$this->割引を返す;
}

パブリック関数 getGrade(){
$this->grade;
を返す }
}
class NormalUser extends AbstractUser {
保護された $discount = 1.0;
protected $grade = "通常ユーザー";
}

クラス VipUser は AbstractUser を拡張します {
保護された $discount = 0.8;
protected $grade = "VipUser";
}

クラス InnerUser extends AbstractUser {
保護された $discount = 0.7;
protected $grade = "内部ユーザー";
}
?>

Product.php

コードは次のとおりです コードをコピー

include_once("User.php");
include_once("Product.php");
//その製品を買うのにいくらかかりましたか?
クラス ProductSettle{
public static function FinalPrice(ユーザー $_user,製品 $_product,$number = 1){
$price = $_user->getDiscount() * $_product->getProductPrice() * $number;
$price を返します;
}
}
?>


以下の例が実装されています。自分で分析することもできます。

コードは次のとおりです コードをコピー


include_once("./class/User.php");
include_once("./class/Product.php");
include_once("./class/ProductSettle.php");

$数値 = 10;
$book = new BookOnline("デザイン モード");


$user = new NormalUser("トム");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "こんにちは、親愛なるユーザー " . $user->getName() " <br>";
$str .= "あなたのレベルは ". $user->getGrade() .", <br>";
$str .= "あなたの割引は " . $user->getDiscount() "<br>";
$str .= "$number 本を購入 " ". $book->getProductName() ;
$str .= "》価格は $price <br><br>";
エコー $str;


$user = 新しい vipUser("トム");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "こんにちは、親愛なるユーザー " . $user->getName() " <br>";
$str .= "あなたのレベルは ". $user->getGrade() .", <br>";
$str .= "あなたの割引は " . $user->getDiscount() "<br>";
$str .= "$number 本を購入 " ". $book->getProductName() ;
$str .= "》価格は $price <br><br>";
エコー $str;

$user = 新しい InnerUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "こんにちは、親愛なるユーザー " . $user->getName() " <br>";
$str .= "あなたのレベルは ". $user->getGrade() .", <br>";
$str .= "あなたの割引は " . $user->getDiscount() "<br>";
$str .= "$number 本を購入 " ". $book->getProductName() ;
$str .= "》価格は $price <br><br>";
エコー $str;
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629254.html技術記事 PHP オブジェクト指向の概念と例についての簡単な記事です。必要な友人は簡単に参照できます。 キーワードと特殊変数 new、class、extends。この3つは誰もが知っています。 ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

See all articles