Maison  >  Article  >  développement back-end  >  À quoi devons-nous faire attention avec les getters et les setters dans yii2 ?

À quoi devons-nous faire attention avec les getters et les setters dans yii2 ?

小云云
小云云original
2018-03-16 13:16:451266parcourir

Cet article partage principalement avec vous ce à quoi vous devez faire attention avec les getters et les setters dans yii2. J'espère qu'il pourra vous aider à mieux maîtriser l'utilisation des getters et des setters dans yii2.

Jetons d'abord un coup d'œil à la description du guide faisant autorité en yiichina :

  • Les noms de ces attributs ne sont pas sensibles à la casse. Par exemple, $object->label et $object->Label sont le même attribut. Parce que les noms de méthodes PHP ne sont pas sensibles à la casse.

  • Si le nom de ce type d'attribut est le même que la variable membre de la classe, cette dernière prévaudra. Par exemple, supposons que la classe Foo ci-dessus ait une variable membre label, Attribuez ensuite une valeur à $object->label = 'abc', qui sera affectée à la variable membre au lieu de la méthode setter setLabel().

  • Ce type d'attribut ne prend pas en charge la visibilité (restrictions d'accès). Le fait que les méthodes getter et setter d'une propriété soient publiques, protégées ou privées n'a aucun effet sur la visibilité de la propriété.

  • Les méthodes getter et setter de ces propriétés ne peuvent être définies que comme non statiques. Si elles sont définies comme méthodes statiques (static), elles ne seront pas traitées de la même manière.

  • Un appel normal à property_exists() qui ne peut pas déterminer la propriété magique. Vous devez appeler canGetProperty() ou canSetProperty().

1. Jetons d'abord un œil à cet article :

Si le nom de ce type d'attribut est le même que la variable membre de la classe, cette dernière prévaudra. . Par exemple, supposons que la classe Foo ci-dessus ait une variable membre label, puis l'attribution d'une valeur à $object->label = 'abc' sera attribuée à la variable membre au lieu de la méthode setter setLabel().

En fait, cette phrase signifie que nos setters et getters ne travaillent que sur les attributs cachés et les attributs protégés. S'il s'agit d'une variable modifiée par le modificateur public, elle sera assignée et obtenue directement sans passer par notre setter ou getter Exemple :

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;

Le résultat de sortie est : 11

<.> Cela signifie que lorsque l'ID utilisateur est un attribut avec un modificateur public, il n'entre pas du tout le getuserid défini par moi. Par conséquent, si votre attribut est de type public et que vous souhaitez traiter les attributs de manière uniforme, vous ne pouvez pas utiliser getter pour y parvenir. il.

Cet article est l'œuvre originale de Wei Yongqiang et ne peut être reproduit sans autorisation : MarsWill » Choses à noter concernant les getters et les setters dans yii2.

Recommandations associées :

Introduction de base aux getters et setters en Javascript

Parlez des réflexions sur les getters et les setters provoquées par Vue. js

Propriétés des accesseurs d'objet dans ECMAScript5 : introduction aux compétences getters et setters_javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn