ホームページ  >  記事  >  バックエンド開発  >  Yii2 の詳細な学習 -- yiibaseObject クラス、yii2 -- yii_PHP チュートリアル

Yii2 の詳細な学習 -- yiibaseObject クラス、yii2 -- yii_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:05:431128ブラウズ

Yii2 の詳細な学習 -- yiibaseObject クラス、yii2 -- yii

Yii2 のほとんどのクラスは yiibaseObject から継承していると前に述べましたが、今日はこのクラスを見てみましょう。

オブジェクトは属性の機能を実装する基本クラスであり、その基本的な内容は次のとおりです。 リーリー

詳細なアノテーションを確認したい場合は、https://github.com/ReadCode/yii2-2.0.3-annotated/blob/master/framework/base/Object.phpにアクセスしてください

上記の内容から、Object クラスが __get メソッドと __set メソッドをオーバーライドしていることがわかります。これら 2 つのメソッドを詳しく見てみましょう。 リーリー

上記のコードに基づくと、Object オブジェクトの特定のプロパティにアクセスすると、Yii が

get property name() という名前の関数を呼び出すことがわかります。たとえば、SomeObject->Fooは、SomeObject->getFoo()を自動的に呼び出します。 プロパティが変更されると、対応するセッター関数が呼び出されます。 たとえば、 SomeObject->Foo = $someValue は、SomeObject->setFoo($someValue) を自動的に呼び出します。 SomeObject の Foo を例に挙げます。 getFoo() メソッドのみが存在する場合、それは読み取り専用です。両方のメソッドが存在する場合にのみ読み取り可能になります。そして書き込み可能。

注意すべき点は、オブジェクトの存在しないメンバー変数を読み書きする場合にのみ、

__get() __set() が自動的に呼び出されることです。 Foo がパブリック プロパティの場合、__get() メソッドと __set() メソッドを経由しません。

したがって、通常、プロパティはプライベートです。例:

リーリー get メソッドと set メソッドで特別な処理を行うこともできます。

__get()

__set() に加えて、yiibaseObject は属性の使用を容易にする次のメソッドも提供します。

  • __isset()は、属性値がnullでないかどうかをテストするために使用され、isset($object->property)のときに自動的に呼び出されます。 このプロパティには対応するゲッターが必要であることに注意してください。
  • __unset()は、プロパティ値をnullに設定するために使用され、unset($object->property)のときに自動的に呼び出されます。 このプロパティには対応するセッターが必要であることに注意してください。
  • hasProperty()は、特定のプロパティが存在するかどうかをテストするために使用されます。つまり、ゲッターまたはセッターが定義されます。 のパラメータがProperty() $checkVars = true (デフォルトはtrue)の場合、前述したように、同じ名前のメンバー変数もこのプロパティを持つものとみなされます。以前 公開 $title
  • canGetProperty() プロパティが読み取り可能かどうかをテストします。パラメータ$checkVarsの意味は上記と同じです。ゲッターが定義されている限り、プロパティは読み取り可能です。 同時に、 $checkVarstru​​e の場合。クラスがメンバー変数を定義している限り、メンバー変数がパブリック、プライベート、または保護されているかどうかに関係なく、それらは読み取り可能であるとみなされます。
  • canSetProperty() プロパティが書き込み可能かどうかをテストします。パラメータ$checkVarsの意味は上記と同じです。 setter が定義されていれば、プロパティを書き込むことができます。 同時に、 $checkVarsture です。その場合、クラスがメンバー変数を定義している限り、それがパブリック、プライベート、または保護されているかどうかに関係なく、そのメンバー変数は書き込み可能であるとみなされます。

Yii2 ソースコードに興味のある学生は、yii2-2.0.3-annotated プロジェクトに注目してください。Yii2 ソースコードに関する多くのコメントが追加されており、今後も追加され続ける予定です。

興味のある学生も参加して、Yii2 ソースコードに関するコメントを送信できます。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1068253.html技術記事 Yii2 の詳細な学習 -- yiibaseObject クラス、yii2 -- yii Yii2 のほとんどのクラスが yiibaseObject から継承していると言う前に、今日はこのクラスを見てみましょう。オブジェクトはベースです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。