Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung häufig verwendeter Schlüsselwörter und magischer Methoden in PHP objektorientiert

Ausführliche Erläuterung häufig verwendeter Schlüsselwörter und magischer Methoden in PHP objektorientiert

墨辰丷
墨辰丷Original
2018-05-26 11:07:32980Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung von Schlüsselwörtern und magischen Methoden vor, die häufig in PHP-Objektorientierung verwendet werden. Ich hoffe, dass er für alle hilfreich ist.

Häufig verwendete Schlüsselwörter in PHP objektorientiert

final

1.final kann keine Mitgliedsattribute ändern (dieses Schlüsselwort wird nicht für Konstanten in Klassen verwendet)

2.final kann nur Klassen und Methoden ändern

Funktion:

Mit final geänderte Klassen können nicht von Unterklassen geerbt werden

Mit final geänderte Methoden können nicht von Unterklassen überschrieben werden

Wird verwendet, um die Vererbung von Klassen einzuschränken. Verwenden Sie final, wenn die Methode nicht überschrieben wird

<?php
//final修饰的类不能被继承
final class Person{
  var $name;
  var $age;
  var $sex;

  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function fun1(){
    echo $this->name;
  }
}

//Student类继承类用final修饰的Person类,所以会报错
class Student extends Person{
}

$stu=new Student("zs",20,"nan");

$stu->fun1();
?>

statisch (statisches Schlüsselwort)

1 Mitgliedsattribute und Mitgliedsmethoden können die Klasse nicht ändern

2. Mit Statik geänderte Mitgliedsattribute können von allen Objekten derselben Klasse gemeinsam genutzt werden

3 Statische Daten sind im Speicherabschnitt ( Statischer Abschnitt initialisieren)

4. Statische Daten werden dem Speicher zugewiesen, wenn die Klasse zum ersten Mal geladen wird. Wenn die Klasse in Zukunft verwendet wird, werden sie direkt aus dem Datensegment abgerufen

5.Was wird in eine Klasse geladen? Solange diese Klasse im Programm verwendet wird (dieser Klassenname erscheint)

6 Statische Methoden (statische modifizierte Methoden) können nicht auf nicht statische Mitglieder zugreifen (auf statische Mitglieder kann in nicht statischen Methoden zugegriffen werden)

Da auf nicht-statische Mitglieder mithilfe von Objekten zugegriffen werden muss, müssen statische Methoden nicht mithilfe von Objekten aufgerufen werden. Daher kann kein Objekt verwendet werden. Es ist nicht statisch. Mitglieder müssen auch Objekte verwenden

Wenn Sie sicher sind, dass in einer Methode keine nicht statischen Mitglieder verwendet werden, können Sie diese Methode als statische Methode deklarieren

Hinweis: Statische Mitglieder müssen Klassennamen verwenden, um darauf zuzugreifen, keine Objekte zu erstellen, keine Objekte für den Zugriff zu verwenden

Klassenname::statische Mitglieder

Wenn Sie statische Mitglieder in einer Klasse verwenden, können Sie verwenden self zur Darstellung dieser Klasse

const

1. Es können nur Mitgliedsattribute geändert werden

2 >

um konstante Attribute in einer Klasse zu deklarieren 3. Zugriffsmethode Gleich wie statische Mitgliedsattribute (verwenden Sie Klassenname::constant außerhalb der Klasse und self::constant innerhalb der Klasse)

Konstanten müssen sein gegebene Anfangswerte, wenn sie deklariert werden

<?php
//定义一个类“人们”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中国";
  //声明一个常量
  const RUN="走";

  //构造方法
  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function getCountry(){
    //如果在类中使用静态成员,可以使用self代表本类
    return self::$country;
  }

  function say(){
    echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
  }

  protected function eat(){
    echo "吃饭!<br>";
  }

  function run(){
    //在类的内部使用常量 self::常量
    echo self::RUN."<br>";
  }

  //声明静态的方法
  static function hello(){
    echo "你好<br>";
  }
}

Magische Methoden, die häufig in PHP objektorientiert verwendet werden

__call()Funktion: Beim Aufruf einer Methode, die im Objekt nicht vorhanden ist, erscheint ein Systemfehler und dann das Programm wird beendet.

Wann automatisch aufgerufen werden soll: Es wird automatisch aufgerufen, wenn eine Methode aufgerufen wird, die in einem Objekt nicht vorhanden ist.

Behandelt einige nicht vorhandene Fehleraufrufe.

Diese Methode erfordert zwei Parameter

<?php
//定义一个类“人们”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中国";
  //声明一个常量
  const RUN="走";

  //构造方法
  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function getCountry(){
    //如果在类中使用静态成员,可以使用self代表本类
    return self::$country;
  }

  function say(){
    echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
  }

  protected function eat(){
    echo "吃饭!<br>";
  }

  function run(){
    //在类的内部使用常量 self::常量
    echo self::RUN."<br>";
  }

  //处理一些不存在的错误调用
  //就会在调用一个对象中不存在的方法时就会自动调用
  function __call($methodName,$args){
    //$methodName调用不存在方法的方法名 $args里面的参数
    echo "你调用的方法{$methodName}(参数:";
    print_r($args);
    echo ")不存在<br>";
  }

  //声明静态的方法
  static function hello(){
    echo "你好<br>";
  }
}

$p=new Person("张三",20,"女");

$p->test(10,20,30);
$p->demo("aa","bb");
$p->say();
?>

__toString() wird automatisch aufgerufen, wenn eine Objektreferenz direkt ausgegeben wird. der schnellste Weg, um schnell eine String-Darstellung zu erhalten

<?php
//定义一个类“人们”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中国";
  //声明一个常量
  const RUN="走";

  //构造方法
  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
  }

  function __toString(){
    return self::$country."<br>{$this->name}<br>{$this->age}<br>{$this->sex}<br>".self::RUN;
  }
}

$p=new Person("张三",21,"女");
echo $p;
?>

__clone() Clone Objekte werden mit clone() verarbeitet

Original (Originalobjekt)

Kopieren (kopiertes Objekt)

__clone() wird beim Klonen eines Objekts automatisch aufgerufene Methoden

Sobald ein Objekt erstellt wird, muss eine Initialisierungsaktion durchgeführt werden, die der Konstruktormethode __constuct ähnelt

Das Schlüsselwort $this in der Methode __clone() stellt dar: Es handelt sich um ein Kopierobjekt, $that stellt das ursprüngliche Objekt dar

<?php
//定义一个类“人们”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中国";
  //声明一个常量
  const RUN="走";

  //构造方法
  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
  }

  function __clone(){
    $this->name="王五";
    $this->age=18;
    $this->sex="男";
  }

  function __destruct(){
    echo $this->name."<br>";
  }
}

$p=new Person("张三",21,"女");
$p->say();
//这并不能叫做克隆对象,因为在析构时只析构一次
/*$p1=$p;
$p1->name="李四";
$p1->say();*/

$p1= clone $p;
$p1->say();
?>

__autoload()Hinweis: Andere magische Methoden sind Dies ist die einzige Methode, die nicht zur Klasse hinzugefügt wird.

Solange eine Klasse auf der Seite verwendet wird und der Klassenname verwendet wird, wird sie automatisch übergeben Klassenname für diesen Parameter


<?php
function __autoload($className){
  include "./test/".$className.".class.php";
}

  $o=new One;
  $o->fun1();  

  $t=new Two;
  $t->fun2();

  $h=new Three;
  $h->fun3();

?>

Datei im Test

one.class.php

<?php
class One{
  function fun1(){
    echo "The Class One<br>";
  }
}
?>

two.class.php

<?php
class Two{
  function fun2(){
    echo "The Class Two<br>";
  }
}
?>

Three.class.php

<?php
class Three{
  function fun3(){
    echo "The Class Three<br>";
  }
}
?>

Objektserialisierung (Serialisierung): Konvertieren Sie ein Objekt in eine Binärzeichenfolge (das Objekt wird im Speicher gespeichert und kann leicht freigegeben werden)

Nutzungsdauer: 1. Beim Speichern von Objekten in einer Datenbank oder Datei über einen längeren Zeitraum

Beim Übertragen von Objekten in mehreren PHP-Dateien

serialize(); Der Parameter ist ein Objekt und der zurückgegebene Wert ist die serialisierte Binärzeichenfolge

unserialize(); Der Parameter ist der Binärzeichenfolge des Objekts und der zurückgegebene Wert ist das neu generierte Objekt

__sleep() ist eine Methode, die während der Serialisierung aufgerufen wird

Funktion: Sie kann ein Objekt teilweise serialisieren

Solange diese Methode Gibt ein Array zurück, mehrere Mitgliedsattribute im Array werden serialisiert. Wenn diese Methode nicht hinzugefügt wird, werden alle Mitglieder serialisiert

__wakeup()

是在反序列化时调用的方法

也是对象重新诞生的过程

<?php
//定义一个类“人们”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中国";
  //声明一个常量
  const RUN="走";

  //构造方法
  function __construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
  }

  function __clone(){
    $this->name="王五";
    $this->age=18;
    $this->sex="男";
  }

  //是在序列化时调用的方法,可以部分串行化对象
  function __sleep(){
    return array("name","age");
  }

  //是在反序列化时调用的方法,也是对象重新诞生的过程。可以改变里面的值
  function __wakeup(){
    $this->name="sanzhang";
    $this->age=$this->age+1;
  }

  function __destruct(){

  }
}
?>

read.php

<?php
  require "11.php";
  
  $str=file_get_contents("mess.txt");
  $p=unserialize($str);

  echo $p->say();
?>

write.php

<?php
  require "11.php";

  $p=new Person("张三",18,"男");

  $str=serialize($p);

  file_put_contents("mess.txt",$str);
?>

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

PHP中关键字interface和implements图文详解

详细讲解php 类、方法关键字教程

了解SQL INNER JOIN 关键字的相关知识

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung häufig verwendeter Schlüsselwörter und magischer Methoden in PHP objektorientiert. 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