Heim  >  Artikel  >  Die chinesische PHP-Website zeigt Ihnen PHP-Konstruktionsmethoden und Zugriffskontrolle

Die chinesische PHP-Website zeigt Ihnen PHP-Konstruktionsmethoden und Zugriffskontrolle

无忌哥哥
无忌哥哥Original
2018-06-28 14:23:361728Durchsuche

* Konstruktionsmethode und Zugriffskontrolle (Querier und Setter)

* Konstruktionsmethode:

* 1. Fester Methodenname: __constructor()

* 2 .Funktion : Deklariert Vorgänge, die beim Erstellen eines Objekts automatisch abgeschlossen werden müssen, z. B. das Initialisieren von Objekteigenschaften oder das automatische Aufrufen von Methoden in einer Klasse

* 3. Eine standardisierte Klasse muss und kann nur einen Konstruktor haben

* Ergänzung: Methoden, die mit doppelten Unterstrichen beginnen, werden im Vergleich zu gewöhnlichen Methoden als magische Methoden bezeichnet:

* 1. Verschiedene Aufrufer: Direkt vom Objekt aufgerufen, der Benutzer hat keine Berechtigungen

* 2. Verschiedene Aufrufszenarien: Es kann nur in bestimmten Szenarien aufgerufen werden und wird automatisch aufgerufen

* Häufige Szenarien, die magische Methodenaufrufe auslösen, sind:

* 1. Objektinitialisierung 2 . Abfrage und Einstellung von Objektattributen; 4. Objektzerstörung 6. Andere Szenarien...

* Wenn ein Konstruktor in der Klasse deklariert ist; ist bei der Deklaration von

keine Initialisierung erforderlich. Sie fragen sich vielleicht, warum Sie $name einen leeren String geben müssen, $age den Wert 0 hat und $stature ein leeres Array ist, da die Initialisierung nicht mehr erforderlich ist.

* Der Grund ist: PHP ist eine schwach typisierte Sprache. Derzeit unterstützen Arrays und Objekte bereits Typhinweise, Skalare wie Zeichenfolgen und numerische Typen werden jedoch immer noch nicht unterstützt. Geben Sie dem Attribut also einen repräsentativen Wert. Der Anfangswert des Typs kann als Typhinweis dienen.

* *

Außerhalb der Klasse werden die Klassenattribute direkt initialisiert durch Zuweisung

* Daher ist es nicht erforderlich, dass die Attribute der Klasse direkt von außen abgerufen werden. Aus Gründen der Sicherheit und der Notwendigkeit der Datenkapselung sollten Klassenattribute nicht zugelassen werden Zugriff

* Verwenden Sie das Schlüsselwort private, um Klassenattribute zu ändern

* privat: Der Zugriff ist nur innerhalb dieser Klassenmethode möglich und kann nicht von externen Klassen oder Unterklassen aufgerufen werden

* If Die Attribute in der Klasse sind privat, dann sollte eine Zugriffsschnittstelle für die Außenwelt bereitgestellt werden

* Diese Schnittstelle wird durch Klassenmethoden implementiert und die Zugriffskontrolle ist öffentlich, das heißt, sie ist von außerhalb zugänglich Klasse

* Ja In der Schnittstellenmethode wird die notwendige Erkennung beim externen Zugriff durchgeführt, um sicherzustellen, dass die Anfrage legal ist und die Daten sicher und aussagekräftig sind

* Für externe Abfrage-(Lese-)Operationen, Legen Sie die Abfragemethode fest, um das Problem zu lösen

* Der empfohlene Name der Abfragemethode lautet: get+Attributname, schreiben Sie das erste Zeichen des Attributnamens groß und verwenden Sie die Benennung in Groß- und Kleinschreibung

* Normalerweise für Abfrager Es müssen keine Parameter übergeben werden. Wenn Parameter übergeben werden, handelt es sich normalerweise um Abfragebedingungen** *

class GirlFriend2 
{
    //类属性:$name 姓名
    public $name = '';
    private $name = '';
    //类属性: 年龄
    public $age = 0;
    private $age = 0;
    
    //类属性: 身材三维stature['stætʃə]: 胸,腰,臀
    public $stature = [];
    private $stature = [];
    //声明构造方法
    public function __construct($name,$age, array $stature) {
        //初始化类成员属性
        $this->name = $name;
        $this->age = $age;
        $this->stature = $stature;
    }
      //查询器: getName() 获取女友姓名
   public function getName()
   {   
       //返回当前对象的name属性值
       return $this->name;
   }
    
    // 通过查询器限制非法用户对类属性的访问
   public function getName($yourName='')
   {
       if (!empty($yourName) && $yourName != '西门大官人' ) {
           return $this->name;
       }
       return '非法访问';
   }
    
    //一个方法中,尽可能只用一个return,否则会警告return语句过多,建议做如下修改
    //添加一个临时变量,这样可确保方法内只会一个return语句
    public function getName($yourName='')
    {
        //创建方法内部变量(局部变量),用来保存要返回的信息
        $msg = '非法访问';
        if (!empty($yourName) && $yourName != '西门大官人' ) {
            $msg = $this->name;
        }
        return $msg;
    }
    
    //下面对年龄和三维的访问,你也可以通过对姓名的限制方式进行访问控制
    //查询器: getAge() 获取女友年龄
    public function getAge()
    {   
        //返回当前对象的age属性值
//        return $this->age;
        //下面是改写一下当前方法,加入一些逻辑判断,仅做演示,实际功能自己扩展
        $msg = $this->age;
        if ($msg >= 50) {
            $msg .= ', 口味够重呀,大兄弟~~';
        } elseif ($msg < 18) {
            $msg .= &#39;, 未成年呢,求放过~~&#39;;
        }        
        return $msg;
    }
    
    //查询器: getStature() 获取女友身材信息
    public function getStature()
    {
        //返回当前对象的$stature属性值
        return $this->stature;
    } 
    
    
    /**
     * 设置器:也叫修改器,允许外部修改类的属性值
     * 参数一般有二个: 属性名与新的属性值
     * 因为属性名在方法中已经指定,这里只需要传入一个新的属性值即可
     */
    //下面通过设置器来控制对类属性的修改操作
    public function setName($value=&#39;&#39;)
    {
        return $this->name = $value;
    }
    
    //设置器更多的应用场景是会属性值进行过滤检测,例如年龄的范围
    public function setAge($value)
    {
        //年龄必须在18~120之间
        if (in_array($value,range(14,120))){
            $this->age = $value;
        }
    }
}

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