ホームページ バックエンド開発 PHPチュートリアル PHPを暗記しながら学ぶ - (12) オブジェクト指向プログラミング2

PHPを暗記しながら学ぶ - (12) オブジェクト指向プログラミング2

Aug 08, 2016 am 09:32 AM
gt public quot school this

この記事と前の記事の間に少し時間があり、途中に小さなプロジェクトが挿入されました。でもそんなことはなく、「暗記しながらPHPを学ぶ」はこれからも続きます。

PHPオブジェクト指向プログラミング

(2)クラス属性

いわゆるクラス属性とは、クラス内で宣言された変数です。クラス外で宣言された変数との違いは、変更されたアクセス許可 (前の記事の public/private/protected) が前に追加されることです。たとえば、学生の学生番号、名前、性別、年齢、クラスなどを含む学生クラスを宣言したいとします。次に、次のように宣言できます。

<?php
class Student{
	private $sid;
	private $name;
	private $gender;
	private $age;
	private $grade;

	public getSid(){
		return $this->sid;
	}
	public getName(){
		return $this->name;
	}
	public getGender(){
		return $this->gender;
	}
	public getAge(){
		return $this->age;
	}
	public getGrade(){
		return $this->grade;
	}

	public setSid($sid){
		$this->sid = $sid;
	}
	public setName($name){
		$this->name = $name;
	}
	public setGender($gender){
		$this->gender = $gender;
	}
	public setAge($age){
		$this->age = $age;
	}
	public setGrade($grade){
		$this->grade = $grade;
	}

}
ログイン後にコピー

上記の学生クラスでは、5 つの属性を宣言しました。これらはすべてプライベートと宣言されています。クラス外からは直接アクセスできないため、2 つのメソッドが提供されています。それぞれのプロパティにアクセスし、その値を設定します。一般に、クラスを宣言するとき、プロパティはプライベートとして宣言され、メンバー メソッドはパブリックとして宣言されるため、外部の世界はパブリック メソッドを通じてプライベート プロパティにアクセスできます。また、アクセスおよび設定メソッドを宣言する場合、通常、getXXX() および setXXX() の形式が使用され、XXX の最初の文字は大文字になります。もちろん、パブリック プロパティとして宣言することもできるため、値を直接割り当ててクラスの外からアクセスすることもできます。ただし、将来的に標準化された場合、各クラスはこのクラスを特別に保存するための個別の PHP ファイルとして存在するため、プライベート属性として宣言することをお勧めします。プライベートとして宣言すると、値が確実に保存されます。このクラスのオブジェクトは自由に変更されないため、セキュリティが確保されます。

属性を宣言する場合、追加クラス変数と同様に、宣言中に値を割り当てることもできます。

ここで注意してください:

属性には、値、配列、さらには別のクラスのオブジェクトを格納できます。たとえば、上記の学生クラスに学校の名前、住所などの学校属性を追加します。最初に学校クラスを宣言します

class School{
	private $name;
	private $address;

	public getName(){
		return $this->name;
	}
	public getAddress(){
		return $this->address;
	}
	public setName($name){
		$this->name = $name;
	}
	public setAddress($address){
		$this->address = $address;
	}
}
ログイン後にコピー
次に、次のように学生クラスに学校属性を追加できます:

<?php
class Student{
	...
	private $school;

	...
	public getSchool(){
		return $this->school;
	}

	...
	public setSchool($school){
		$this->school = $school;
	}

}
ログイン後にコピー
この方法では、他の属性と同じように見えますが、代入するときパラメータを取得するときは、オブジェクトを渡すように注意してください。例:

まず学校を宣言します:

<span style="white-space:pre">	</span>$school1 = new School();
<span style="white-space:pre">	</span>$school1->setName("大连理工大学");
<span style="white-space:pre">	</span>$school1->setAddress("大连");
<span style="white-space:pre">	</span>$stu1 = new Student();
<span style="white-space:pre">	</span>$stu1->setSchool($school1);
ログイン後にコピー
このようにして、がその学校を訪問するときのオブジェクトになります。この生徒がいる学校の名前を知りたい場合は、次のようにします。 will アクセスするには次のようにします:

<span style="white-space:pre">	</span>$stu1->getSchool()->getName();
ログイン後にコピー
getSchool メソッドを使用して School オブジェクトを取得し、School オブジェクトの getName メソッドを使用してその名前にアクセスします。

クラス内の変数にアクセスするときに $this キーワードを使用したので、this キーワードについて説明します。

(3) $this キーワード

パブリック、プライベート、または保護されたメンバー変数として宣言されているかどうかに関係なく、クラス内の独自の変数へのアクセスが確実に存在するため、$this キーワードを使用する必要がありますキーキャラクター。私の意見では、$this キーワードはクラス自体を指し、それ自体を独自のプロパティを呼び出すオブジェクトとして扱うことも理解できます。ここで、変数を宣言するときに $ 記号を使用することに注意してください。ただし、$this を使用してアクセスする場合は、これと $ 記号のみを使用し、後続の属性を追加しないでください。追加しないと、エラーが報告されます。具体的な使用方法については、上記のコードを参照してください。もちろん、外部で宣言されたオブジェクトが呼び出される場合、それは $this と同じであり、$ 記号をオブジェクトに追加する必要がありますが、後で追加する必要はありません。

(4) 静的属性

静的属性をどう説明するか思いつきませんでしたが、本の中でそれをよく表している次の文を見つけました: 静的属性は、 specific インスタンス オブジェクトではなくクラスに関連する永続値。静的プロパティは使い古されたグローバル変数と考えることができます。静的プロパティの重要な特徴は、静的プロパティにアクセスするときに、クラスのインスタンスを作成する必要がないこと、つまり、クラスのオブジェクトを定義する必要がないことです。

この本の中で、車のカテゴリーには販売数量の静的な属性があります。つまり、誰が車を買っても、とにかく売れれば、私の販売数量は増加します。 1までに。しかし、私はすでに学生と学校の例を挙げましたが、私は学校の卒業生のこの特質について考えます。つまり、あなたが誰であっても、私の学校を卒業している限り、そうすると、卒業生があと1人増えることになります。次に、次のように宣言できます:

<span style="white-space:pre">	</span>public static $graduate;
ログイン後にコピー
つまり、変数の前に static キーワードを追加します。この静的属性にアクセスするときは、オブジェクトを使用して直接アクセスする必要はありません。 School::$graduate = ...; それだけです。これは、定義する必要のないオブジェクトにアクセスできると上で述べたことです。ここで、静的属性と通常の属性の違いを図で説明します。

静态属性只占这个内存,不管存不存在对象实例,除非这个类没了,否则会一直占有自己的内存。而普通的属性在每次声明对象的时候都会分配内存。

静态属性一般声明成公有的。

(6)类常量

与类外的普通常量一样,类常量也是存储一个固定的值。使用const关键字进行声明,这里不需要加权限修饰。在访问的时候跟访问静态属性一样需要使用类名::(双冒号)加常量名来访问。比如如果我声明一个手机类,手机有各种型号,那么我可以把各个手机型号用常量来存储,在给手机型号属性赋值的时候使用这些常量来赋值就好了。但是可能有这种疑惑,为什么要使用常量,我直接声明不就行了。那么可以这样理解:

class Phone{
	const IPHONE = 1;
	const ZTE = 2;
	const HUAWEI = 3;

    //这里面各种属性

}
ログイン後にコピー
我这个是一个手机类,里面声明了三个常量,这里注意,声明常量不需要$符号,并且常量的名字一般大写。但是你注意我在里面存储的是int型的数据,如果我给手机型号赋值的时候虽然给他赋值是类似:$this->type = ZTE;但是我的型号存的是int型的数据,那么就会占内存少,如果我不适用常量$this->type = 'ZTE';这样我就存的字符串。并且使用常量可以提高编译速度。

这是我理解的常量的优点。但是我没怎么用过。

下一篇继续面向对象。

以上就介绍了边记边学PHP-(十二)面向对象编程2,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

取引 | RTX 3050 を上回る RX 6550M を搭載した手頃な価格の HP Victus ゲーミング ラップトップが Best Buy セールで 40% 割引 取引 | RTX 3050 を上回る RX 6550M を搭載した手頃な価格の HP Victus ゲーミング ラップトップが Best Buy セールで 40% 割引 Aug 09, 2024 pm 09:51 PM

HP Victus 15 は 15.6 インチのエントリーレベルのゲーム用ラップトップで、通常はあまり検討する価値はありませんが、新しい Best Buy の取引によりエントリーレベルのゲーム用ラップトップが 40% オフとなり、価格が 799.99 ドルから非常に安くなりました。予算に優しい $

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

この点を理解してフロントエンド担当者の7割をキャッチアップした記事 この点を理解してフロントエンド担当者の7割をキャッチアップした記事 Sep 06, 2022 pm 05:03 PM

同僚は、これによって指摘されたバグのために立ち往生しました。Vue2 のこの指摘の問題により、アロー関数が使用され、その結果、対応する props を取得できなくなりました。私がそれを彼に紹介したとき、彼はそれを知りませんでした。その後、私はわざとフロントエンド コミュニケーション グループに目を向けました。これまでのところ、フロントエンド プログラマーの少なくとも 70% はまだそれを理解していません。今日私はそれを共有しますyou this link. もしすべてが間違っている場合 まだ学習していない場合は、大きな口を与えてください。

watch4proとGTのどちらが優れていますか? watch4proとGTのどちらが優れていますか? Sep 26, 2023 pm 02:45 PM

Watch4proとgtはそれぞれ特徴や適用シーンが異なりますが、総合的な機能、高性能、スタイリッシュな外観を重視し、価格は高くてもいいという方にはWatch 4 Proの方が適しているかもしれません。高度な機能要件はなく、バッテリー寿命と手頃な価格を重視する場合は、GT シリーズの方が適しているかもしれません。最終的な選択は、個人のニーズ、予算、好みに基づいて決定する必要がありますが、購入する前に自分のニーズを慎重に検討し、さまざまな製品のレビューや比較を参照して、より情報に基づいた選択を行うことをお勧めします。

See all articles