Heim  >  Artikel  >  Backend-Entwicklung  >  Worauf sollten wir bei Gettern und Settern in yii2 achten?

Worauf sollten wir bei Gettern und Settern in yii2 achten?

小云云
小云云Original
2018-03-16 13:16:451311Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich mit, worauf Sie bei Gettern und Settern in yii2 achten müssen. Ich hoffe, dass er Ihnen dabei helfen kann, die Verwendung von Gettern und Settern in yii2 besser zu beherrschen.

Werfen wir zunächst einen Blick auf die Beschreibung des maßgeblichen Leitfadens in Yiichina:

  • Bei den Namen solcher Attribute wird die Groß-/Kleinschreibung nicht beachtet. Beispielsweise sind $object->label und $object->Label dasselbe Attribut. Weil bei PHP-Methodennamen die Groß-/Kleinschreibung nicht beachtet wird.

  • Wenn der Name dieses Attributtyps mit dem Namen der Klassenmitgliedsvariablen übereinstimmt, hat letztere Vorrang. Angenommen, die obige Foo-Klasse verfügt über eine Label-Mitgliedsvariable. Weisen Sie dann $object->label = 'abc' einen Wert zu, der der Mitgliedsvariablen anstelle der Setter-Methode setLabel() zugewiesen wird.

  • Diese Art von Attribut unterstützt keine Sichtbarkeit (Zugriffsbeschränkungen). Ob die Getter- und Setter-Methoden einer Eigenschaft öffentlich, geschützt oder privat sind, hat keinen Einfluss auf die Sichtbarkeit der Eigenschaft.

  • Die Getter- und Setter-Methoden solcher Eigenschaften können nur als nicht statisch definiert werden. Wenn sie als statische Methoden (statisch) definiert sind, werden sie nicht auf die gleiche Weise verarbeitet.

  • Ein normaler Aufruf von property_exists(), der die magische Eigenschaft nicht bestimmen kann. Sie sollten canGetProperty() oder canSetProperty() aufrufen.

1. Schauen wir uns zuerst diesen Artikel an:

Wenn der Name dieses Attributtyps mit dem Namen der Klassenmitgliedsvariablen übereinstimmt, hat letztere Vorrang . Angenommen, die obige Foo-Klasse verfügt über eine Label-Mitgliedsvariable, und wenn Sie dann $object->label = ‚abc‘ einen Wert zuweisen, wird dieser Mitgliedsvariable statt der Setter-Methode setLabel() zugewiesen.

Tatsächlich bedeutet dieser Satz, dass unsere Setter und Getter nur mit versteckten Attributen und geschützten Attributen arbeiten. Wenn es sich um eine vom öffentlichen Modifikator geänderte Variable handelt, wird sie direkt zugewiesen und abgerufen, ohne dass unser Setter oder Getter durchlaufen werden muss. Beispiel:

dfa772b8e31c4c8678194fbb30e36621
 * Site: www.weiyongqiang.com
 * Date: 2017/3/6
 * Time: 23:29
 */
namespace frontend\components;
use yii\base\Component;
class UserInfo extends Component
{
    public $userid = 11;
    public $userName;
    public function __construct(array $config)
    {
        parent::__construct($config);
    }
    public function setUserId($userId)
    {
        echo 123;
        $this->userId = $userId;
    }
    public function getuserid()
    {
        //return $this->userId;
        return 123456;
    }
}
然后实例化组件后的获取userid属性
$userInfo = new UserInfo([]);echo "<pre/>";
//$userInfo->userId = 10;echo $userInfo->userid;exit;

Das Ausgabeergebnis ist: 11

Das heißt, wenn userid ein Attribut mit öffentlichem Modifikator ist, wird die von mir definierte getuserid überhaupt nicht eingegeben. Wenn Ihr Attribut daher vom öffentlichen Typ ist und Sie die Attribute einheitlich verarbeiten möchten, können Sie dies nicht mit Getter erreichen Es.

Dieser Artikel ist das Originalwerk von Wei Yongqiang und darf nicht ohne Genehmigung reproduziert werden: MarsWill » Was Sie über Getter und Setter in yii2 beachten sollten.

Verwandte Empfehlungen:

Grundlegende Einführung in Getter und Setter in Javascript

Sprechen Sie über die Gedanken über Getter und Setter, die von Vue verursacht werden. js

Objektzugriffseigenschaften in ECMAScript5: Einführung in Getter- und Setter_Javascript-Fähigkeiten

Das obige ist der detaillierte Inhalt vonWorauf sollten wir bei Gettern und Settern in yii2 achten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn