目次
荒廃した土曜日-PHPオブジェクト指向(3)、土曜日-phpオブジェクト指向
ホームページ バックエンド開発 PHPチュートリアル 無人の土曜日 - PHP オブジェクト指向 (3)、土曜日 - PHP オブジェクト指向_PHP チュートリアル

無人の土曜日 - PHP オブジェクト指向 (3)、土曜日 - PHP オブジェクト指向_PHP チュートリアル

Jul 12, 2016 am 09:03 AM

荒廃した土曜日-PHPオブジェクト指向(3)、土曜日-phpオブジェクト指向

こんにちは

またカイセンの土曜日です。 2週間溜め込んでいた洋服がようやくほぼ完成しました。午後は何かを学びに来てください~~

1. PHP オブジェクト指向 (3)

4. OOP の高度な実践

4.3 静的-静的メンバー

date_default_timezone_set("PRC");
/**
* 1. クラスの定義は class キーワードで始まり、その後にクラス名が続きます。クラス名は通常、各単語の最初の文字を大文字にして付けられます。
* 2. クラスのプロパティを定義します
* 3. クラスのメソッドを定義します
* 4. クラスのオブジェクトをインスタンス化します
* 5. オブジェクトのプロパティとメソッドを使用します
*/

class Human{
public $name;
public $height;
public $weight;

public function Eat($food){
echo $this->name." は ".$food." を食べています< br/>";
}
}

クラス動物{
public $kind;
public $gender;
}


class NbaPlayer extends Human{
//クラス属性の定義
public $name="Jordan";//属性の定義
public $height="198cm";
public $weight="98kg";
public $team ="Bull";
public $playerNumber="23";
private $age="44";
public $president="David Stern";



// クラスメソッドの定義
public function changePresident($ newP ){
$this->president=$newP;
}

public function run() {
echo "Running
";
}

public function Jump(){
echo "Jumping
";
}

public function dribble(){
echo "Dribbling
";
}

public functionshoot(){
echo "射撃
";
}

public function dunk(){
echo "ダンキング
";
}

public function pass(){
echo "通過
";
}

public function getAge(){
echo $this->name." の年齢は ".$this->age;
}

function __construct($name, $height, $weight , $team, $playerNumber){
$name . ";" . ";" ;name = $name; // $this はオブジェクト自体を表す php の疑似変数です
$this->height = $height; // $this はオブジェクトの属性値を設定するために使用できます
->体重 = $weight;
$this->チーム = $team;
$this->playerNumber = $playerNumber;
}

}

/**
* 1. クラスをオブジェクトにインスタンス化する場合は、 new キーワードを使用し、その後に new 、クラス名と 1 組のかっこを続けます。
* 2. オブジェクトを使用すると、他の値を使用するのと同じように代入操作を実行できます
*/
$jordan = new NbaPlayer("Jordan", "198cm","98kg","Bull","23");echo "
";
$ james=new NbaPlayer("James", "203cm", "120kg", "Heat", "6");echo "
";
// オブジェクトのプロパティにアクセスするために使用される構文は次のとおりです。 -> 記号、その後に属性の名前が続きます
echo $jordan->name."
";
// オブジェクトのメソッドを呼び出すために使用される構文は、-> 記号です。その後にメソッドの名前と括弧が続きます
$jordan->run();
$jordan->pass();
//サブクラスは親クラスのメソッドを呼び出します
$jordan->eat ("apple");
//直接、内部パブリック関数を通じてプライベートを呼び出してみてください
//$jordan->age;
$jordan->getAge();echo "
";

$jordan->changePresident("Adam Silver");

echo $jordan->president."
";
echo $james->president."
";

上記の例から直接始めましょう。

ここで達成したいのは、

2 つのオブジェクトの特定の変数を同時に変更することです。 ——静的を使用します

public static $president="David Stern";
// クラスメソッドの定義
public
static function changePresident($newP){
static::$president=$newP;// ここで static を変更します自分自身がより標準に沿っています }

ここでの static の位置とメソッド内の ::

に注意してください

通話方法も変わりました。

echo

NbaPlayer::$president;echo "
";

NbaPlayer::changePresident("Adam Silver");echo NbaPlayer::$president;echo "
";

つまり、前に述べたように、

静的メンバーは定数であるため、特定のオブジェクトを対象としていません (特定のオブジェクトによって制限されません) — これに基づいて、定義、代入、および呼び出しには、特定のオブジェクト。

内部呼び出しの場合は、self/static::$...を使用します

外部呼び出し、クラス名::

目的はすべてのオブジェクトで共有されるデータです。

-- 内部で呼び出されたときに変数が親クラスにある場合

例えば上記の例では、親クラスのhumanにこの文を書きます

パブリック静的 $aaa="dafdfa";

次に、サブクラス nbaplayer で、親クラスの静的メンバーを呼び出すときに、

エコー 親::$aaa;

外部呼び出しの場合は、上記のようにクラス名::なので、親クラス名を直接使用してください

エコー人間::$aaa;

--その他

静的メソッドでは、他の変数にアクセスできません。つまり、$this->

--概要

/**
* 静的メンバー
* 1. 静的プロパティは、クラスの公開データを保存するために使用されます
* 2. 静的メソッドでは静的プロパティのみにアクセスできます
* 3. 静的メンバーは、オブジェクトをインスタンス化せずにアクセスできます
* 4.クラス内では、 self または static キーワードを使用して独自の静的メンバーにアクセスできます
* 5。親クラスの静的メンバーには、parent キーワードを使用してアクセスできます
* 6。 クラスの静的メンバーには、外部からアクセスできます。クラス名
*/

4.4最終メンバー

--質問

クラスにサブクラスを持たせたくありません;

サブクラスが親クラスの変数を変更しないようにします (オーバーライドを避けますか?)

--最終

》=php5のバージョン

例を挙げてください

class BaseClass{
public function test(){
echo "BaseClass::test が呼び出されました
";
}

public function test1(){
echo "BaseClass::test1 が呼び出されました
" ;
}
}

class ChildClass extends BaseClass{
public function test(){
echo "ChildClass::test called
";
}
}

$obj=new ChildClass();
$obj->test();

親クラスと同じメソッド名をサブクラスに書くと(内容は違っても良い)、親クラスのメソッドの書き換えが完了します!

したがって、オーバーライドされたくない親クラスのメソッドについては、final

と記述してください

最終パブリック関数テスト(){

同様に、サブクラスを持ちたくない親クラスの場合は、クラス名にfinalと記述します

最終クラスBaseClass{

--概要

/**
* 書き換えと最終
* 1. 親クラスと全く同じメソッドをサブクラスに書くことで、親クラスのメソッドの書き換えが完了します
* 2. どのクラスにも継承したくないクラスの場合、クラスの前にfinalキーワードを追加できます
* 3. サブクラスによって上書き(上書き、変更)されたくないメソッドの場合、メソッド定義の前にfinalキーワードを追加できます
*/

4.5 データアクセス

最初にすべての決勝を削除します

--親

それをサブクラスのメソッドに記述します

親::test();

実行後は、たとえデータが書き換えられたとしても、親キーワードを介して親クラスを呼び出すことができることがわかります

--自分

次に親クラスのメソッドテストを書きます

self::test1();

実行後、自身が同じクラス内のデータ(他のメソッド/静的変数/定数const)を呼び出せることが分かりました

--概要

/**
* データアクセスの補足
* 1.parent キーワードは、親クラスのオーバーライドされたクラス メンバーを呼び出すために使用できます
* 2. self キーワードは、クラス自体のメンバー メソッドにアクセスするために使用できます。独自の静的メンバーとクラス定数にアクセスする; クラス自体のプロパティにアクセスするために使用することはできません; クラス定数にアクセスする場合、定数名の前に $ 記号を追加する必要はありません
* 3. static キーワードが使用されます。クラス自体で定義された静的メンバーにアクセスするには、静的プロパティにアクセスするときは、プロパティ名に $ 記号を追加する必要があります 前に $ 記号を追加します
*/

4.6 オブジェクトインターフェース

とても重要です! ! !

--質問

異なるクラスは同じ動作をしますが、同じ動作でも実装方法は異なります。

例えば、人間も動物も食事をしますが、食べ方が違います。

--定義

インターフェイスは、さまざまなクラスの共通の動作を定義し、さまざまなクラスにさまざまな機能を実装します。

--栗

//インターフェースを定義する
interface ICanEat{
public function Eat($food);
}

ご覧のとおり、インターフェイスにはメソッドの特定の実装はありませんが、メソッドは必ず存在します。

ということで、以下は「人間は食べられる」です

//インターフェイスに接続された特定のオブジェクト
class Human 実装 ICanEat{

public function Eat($food){
echo "".$food." を食べる人間。
";
}
}

$obj=new Human();
$obj->eat("shit");

私が与えた「食べ物」は無視してください。

では「extends」が使用されなくなり、「implements」が使用されることに注意してください。すると、同じメソッド名は全く同じになります。次に、オブジェクトはメソッドを実装する必要があります、または実装することが望ましいです。

続ける

インターフェース ICanEat{
パブリック関数 Eat($food);
}

//インターフェイスに接続された特定のオブジェクト
クラス Human 実装 ICanEat{
public function Eat($food){
echo "".$food." を食べる人間。
";
}
}

class Animal は ICanEat{
public function Eat($food){
echo "".$food." を食べる動物。
";
}
}

を実装します。


$obj=新しい人間();
$obj->eat("クソ");

$monkey=新しい動物();
$monkey->eat("バナナ");

動物たちにも食べさせましょう!

--逆の操作

オブジェクトがインターフェイスに接続されているかどうかを判断します。

var_dump($objinstanceofICanEat);

はブール値を返します。

--もっと栗

インターフェース ICanPee は ICanEat{
public function pee();
}

を拡張します

class Demon は ICanPee を実装します{
public function pee(){
echo "悪魔はおしっこできますか?";
}
public function Eat($food){
echo "悪魔は食べられますか".$food;
}
}

$ghost=新しいデーモン();
$ゴースト->おしっこ();
$ゴースト->食べる("クソ");

インターフェイスは本質的にクラスであり、継承/継承が可能ですが、インターフェイスを継承するインターフェイスを使用する場合、親クラスと「祖父クラス」のすべてのメソッドには特定の実装が必要です。

--概要

/**
* インターフェイス
* 1. インターフェイスの基本概念と基本的な使用法
* 2. インターフェイス内のメソッドには特定の実装はありません
* 3. インターフェイスを実装するクラスは、インターフェイス内で定義されたメソッドを提供する必要があります
* 4.いいえ インターフェイスを使用してオブジェクトを作成しますが、オブジェクトがインターフェイスを実装しているかどうかを判断できます
* 5. インターフェイスはインターフェイスを継承できます (インターフェイスはインターフェイスを拡張します)
* 6. インターフェイスで定義されたすべてのメソッドはパブリックである必要があり、これはインターフェイスの特性ですインターフェース 。
*/

ああああああああああ

ブ・シャン・シェ・レ…………

ミンティエンヤオゲー....

www.bkjia.com本当http://www.bkjia.com/PHPjc/1077971.html技術記事無人の土曜日 - PHP オブジェクト指向 (3)、土曜日 - PHP オブジェクト指向 こんにちは、カイセンの土曜日です。 2週間溜め込んでいた洋服がようやくほぼ完成しました。午後に何かを学びにここに来ただけです...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPロギング:PHPログ分析のベストプラクティス PHPロギング:PHPログ分析のベストプラクティス Mar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles