PHP5指针的类别介绍
大家也许多首先我们来理解三个关键字: this,self,parent,从字面上比较好理解,是指这,自己,父亲,呵呵,比较好玩了,我们先建立几个概念,这三个关键字分别是用在什么地方 呢?我们初步解释一下,this是指向当前对象的指针(我们姑且用C里面的指针来看吧),self是指向当前类的指针,parent是指向父类的指针。
这么说还不能很了解,那我们就根据实际的例子结合来讲讲。
(1) PHP5指针之this
<ol class="dp-xml"> <li class="alt"><span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">php</span></font></strong><span> </span></span></li> <li class=""><span> </span></li> <li class="alt"><span>class UserName </span></li> <li class=""><span>{ </span></li> <li class="alt"><span>//定义属性 </span></li> <li class=""><span>private $name; </span></li> <li class="alt"><span> </span></li> <li class=""><span>//定义构造函数 </span></li> <li class="alt"><span>function __construct( $name ) </span></li> <li class=""><span>{ </span></li> <li class="alt"> <span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name; //这里已经使用了this指针 </span> </li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>//析构函数 </span></li> <li class="alt"><span>function __destruct(){} </span></li> <li class=""><span> </span></li> <li class="alt"><span>//打印用户名成员函数 </span></li> <li class=""><span>function printName() </span></li> <li class="alt"><span>{ </span></li> <li class=""> <span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>name ); //又使用了this指针 </span> </li> <li class="alt"><span>} </span></li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>//实例化对象 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">nameObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> UserName( "heiyeluren" ); </span> </li> <li class=""><span> </span></li> <li class="alt"><span>//执行打印 </span></li> <li class=""> <span>$nameObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printName(); //输出: heiyeluren </span> </li> <li class="alt"><span> </span></li> <li class=""><span>//第二次实例化对象 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">nameObject2</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> UserName( "PHP5" ); </span> </li> <li class=""><span> </span></li> <li class="alt"><span>//执行打印 </span></li> <li class=""> <span>$nameObject2-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printName(); //输出:PHP5 </span> </li> <li class="alt"> <span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>
我们看,上面的类分别在11行和20行使用了this指针,那么当时this是指向谁呢?其实this是在实例化的时候来确定指向谁,比如第一次实例化对象 的时候(25行),那么当时this就是指向$nameObject对象,那么执行18行的打印的时候就把print( $this->
(2)PHP5指针之self
首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。
<ol class="dp-xml"> <li class="alt"><span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">php</span></font></strong><span> </span></span></li> <li class=""><span> </span></li> <li class="alt"><span>class Counter </span></li> <li class=""><span>{ </span></li> <li class="alt"><span>//定义属性,包括一个静态变量 </span></li> <li class=""> <span>private static $</span><span class="attribute"><font color="#ff0000">firstCount</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">0</font></span><span>; </span> </li> <li class="alt"><span>private $lastCount; </span></li> <li class=""><span>//构造函数 </span></li> <li class="alt"><span>function __construct() </span></li> <li class=""><span>{ </span></li> <li class="alt"> <span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">lastCount</font></span><span> = ++selft::$firstCount; //使用self来调用静态变量,使用self调用必须使用::(域运算符号) </span> </li> <li class=""><span>} </span></li> <li class="alt"><span>//打印最次数值 </span></li> <li class=""><span>function printLastCount() </span></li> <li class="alt"><span>{ </span></li> <li class=""> <span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>lastCount ); </span> </li> <li class="alt"><span>} </span></li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>//实例化对象 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">countObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> Counter(); </span> </li> <li class=""> <span>$countObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printLastCount(); //输出 1 </span> </li> <li class="alt"> <span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>
我们这里只要注意两个地方,第6行和第12行。我们在第二行定义了一个静态变量$firstCount,并且初始值为0,那么在12行的时候调用了这个值 得,使用的是self来调用,并且中间使用"::"来连接,就是我们所谓的域运算符,那么这时候我们调用的就是类自己定义的静态变量$ frestCount,我们的静态变量与下面对象的实例无关,它只是跟类有关,那么我调用类本身的的,那么我们就无法使用this来引用,可以使用 self来引用,因为self是指向类本身,与任何对象实例无关。换句话说,假如我们的类里面静态的成员,我们也必须使用self来调用。
(3)PHP5指针之parent
我们知道parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。
<ol class="dp-xml"> <li class="alt"><span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">php</span></font></strong><span> </span></span></li> <li class=""><span>//基类 </span></li> <li class="alt"><span>class Animal </span></li> <li class=""><span>{ </span></li> <li class="alt"><span>//基类的属性 </span></li> <li class=""><span>public $name; //名字 </span></li> <li class="alt"><span>//基类的构造函数 </span></li> <li class=""><span>public function __construct( $name ) </span></li> <li class="alt"><span>{ </span></li> <li class=""> <span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name; </span> </li> <li class="alt"><span>} </span></li> <li class=""><span>} </span></li> <li class="alt"><span>//派生类 </span></li> <li class=""><span>class Person extends Animal //Person类继承了Animal类 </span></li> <li class="alt"><span>{ </span></li> <li class=""><span>public $personSex; //性别 </span></li> <li class="alt"><span>public $personAge; //年龄 </span></li> <li class=""><span>//继承类的构造函数 </span></li> <li class="alt"><span>function __construct( $personSex, $personAge ) </span></li> <li class=""><span>{ </span></li> <li class="alt"><span>parent::__construct( "heiyeluren" ); //使用parent调用了父类的构造函数 </span></li> <li class=""> <span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">personSex</font></span><span> = $personSex; </span> </li> <li class="alt"> <span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">personAge</font></span><span> = $personAge; </span> </li> <li class=""><span>} </span></li> <li class="alt"><span>function printPerson() </span></li> <li class=""><span>{ </span></li> <li class="alt"> <span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>name. " is " .$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>personSex. ",this year " .$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>personAge ); </span> </li> <li class=""><span>} </span></li> <li class="alt"><span>} </span></li> <li class=""><span>//实例化Person对象 </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">personObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> Person( "male", "21"); </span> </li> <li class=""><span> </span></li> <li class="alt"><span>//执行打印 </span></li> <li class=""> <span>$personObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printPerson(); //输出:heiyeluren is male,this year 21 </span> </li> <li class="alt"><span> </span></li> <li class=""> <span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

ジェネリック関数が Go でポインター型を処理する場合、元の変数への参照を受け取り、変数値を変更できるようになります。参照型は渡されるときにコピーされるため、関数は元の変数値を変更できなくなります。実際の例には、汎用関数を使用して文字列または数値のスライスを比較することが含まれます。

PyCharm は、開発効率を大幅に向上させる豊富な機能とツールを備えた強力な Python 統合開発環境です。その中でも置換機能は開発プロセスで頻繁に使用される機能の 1 つであり、開発者がコードを迅速に修正し、コードの品質を向上させるのに役立ちます。この記事では、初心者がこの関数をよりよく習得して使用できるように、特定のコード例と組み合わせて PyCharm の置換関数を詳細に紹介します。置換関数の概要 PyCharm の置換関数は、開発者がコード内の指定されたテキストを迅速に置換するのに役立ちます

Dogecoin は、インターネット ミームに基づいて作成された暗号通貨であり、固定供給上限がなく、速い取引時間、低い取引手数料、そして大規模なミーム コミュニティを備えています。用途には、少額の取引、チップ、慈善寄付が含まれます。しかし、その無限の供給、市場のボラティリティ、ジョークコインとしての地位は、リスクと懸念ももたらします。ドージコインとは何ですか? Dogecoin は、インターネットのミームやジョークに基づいて作成された暗号通貨です。起源と歴史: Dogecoin は、2 人のソフトウェア エンジニア、ビリー マーカスとジャクソン パーマーによって 2013 年 12 月に作成されました。当時人気だった「Doge」ミームからインスピレーションを得た、片言の英語を話す柴犬をフィーチャーしたコミカルな写真。特徴と利点: 無制限の供給: ビットコインなどの他の暗号通貨とは異なります。

Go 言語ではポインタ型のアプローチが利用できます。これにより、メソッド シグネチャで明示的にポインタを渡さずに、ポインタ型の関数を定義して、指す値を変更できます。これにより、値によるコピーのパスをコピーする必要がなくなるため、コードが単純になり、効率が向上します。ポインター型メソッドの構文は、typeTypeName*Type\nfunc(t*TypeName)MethodName() です。ポインター型のメソッドを使用するには、その型のインスタンスへのポインターを作成し、そのポインターを使用してメソッドを呼び出します。ポインター型メソッドの利点には、コードの単純さ、効率性、および変更可能性が含まれます。ポインタ型メソッドはポインタ型に対してのみ使用できることに注意してください。また、ポインタ型メソッドを使用する場合は、指す構造体の値が誤って取得される可能性があるため注意が必要です。

C++ の参照とポインターはどちらも関数パラメーターを渡す方法ですが、違いがあります。リファレンスは変数のエイリアスです。リファレンスを変更すると元の変数が変更され、ポインタには変数のアドレスが格納されます。ポインタ値を変更しても元の変数は変更されません。参照またはポインターの使用を選択する場合は、元の変数を変更する必要があるかどうか、NULL 値を渡す必要があるかどうか、パフォーマンスに関する考慮事項などの要素を考慮する必要があります。

高速スコア照会ツールは、生徒と保護者にとって利便性を高めます。インターネットの発展に伴い、ますます多くの教育機関や学校がオンライン スコア チェック サービスを提供し始めています。お子様の学業の進歩を簡単に追跡できるように、この記事では、一般的に使用されているオンラインスコアチェックプラットフォームをいくつか紹介します。 1. 利便性 - 保護者は、オンラインスコア確認プラットフォームを通じて、いつでもどこでも子供のテストスコアを確認できます。保護者は、コンピュータまたは携帯電話で対応するオンラインスコア確認プラットフォームにログインすることで、いつでも簡単に子供のテストスコアを確認できます。インターネットに接続できる環境であれば、仕事中でも外出中でも、保護者は子どもの学習状況を把握し、的を絞った指導や支援を行うことができます。 2. 複数の機能 - スコアのクエリに加えて、コースのスケジュールや試験の手配などの情報をオンラインで検索することもできます。

2024 年は AI 携帯電話元年です。AI スマート テクノロジーにより、携帯電話はますます効率的かつ便利に使用できるようになります。最近、今年の初めにリリースされたGalaxy S24シリーズは、生成AIエクスペリエンスを再び改善しました。以下で詳細な機能の紹介を見てみましょう。 1. 生成 AI は Samsung Galaxy S24 シリーズを強力に強化します。Galaxy S24 シリーズは、Galaxy AI によって強化され、多くのインテリジェント アプリケーションをもたらします。これらの機能は Samsung One UI6.1 と緊密に統合されており、ユーザーはいつでも便利なインテリジェントなエクスペリエンスを得ることができ、パフォーマンスが大幅に向上します。携帯電話の効率と使いやすさ。 Galaxy S24 シリーズで先駆けて開発されたサークルアンド検索機能は、長押しするだけで実現できる機能です。
