PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

PHP XML

PHP XML-parsers PHP SimpleXML-parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

Ajax-intro AJAX PHP AJAX-database AJAX XML Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

PHP OOP - Eigenschappen


PHP - Wat zijn eigenschappen?

PHP ondersteunt alleen enkele overerving: een onderliggende klasse kan slechts van één enkele ouder erven.

Dus, wat als een klas meerdere gedragingen moet erven? OOP-kenmerken lossen dit probleem op.

Traits worden gebruikt om methoden te declareren die in meerdere klassen kunnen worden gebruikt. Eigenschappen kunnen methoden en abstracte methoden hebben die in meerdere klassen kunnen worden gebruikt, en de methoden kunnen elke toegangsmodificator hebben (openbaar, privé of beveiligd).

Eigenschappen worden gedeclareerd met het trait trefwoord:

Syntaxis

<?php
trait TraitName {
  // some code...
}
?>

Gebruik het use trefwoord om een ​​eigenschap in een klas te gebruiken:

Syntaxis

<?php
class MyClass {
  use TraitName;
}
?>

Laten we een voorbeeld bekijken:

Voorbeeld

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Voorbeeld uitgelegd

Hier verklaren we één eigenschap: message1. Vervolgens maken we een klas aan: Welkom. De klas gebruikt de eigenschap en alle methoden in de eigenschap zijn beschikbaar in de klas.

Als andere klassen de functie msg1() moeten gebruiken, gebruik dan gewoon de eigenschap message1 in die klassen. Dit vermindert codeduplicatie, omdat het niet nodig is om dezelfde methode steeds opnieuw te declareren.



PHP - Meerdere eigenschappen gebruiken

Laten we een ander voorbeeld bekijken:

Voorbeeld

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

Voorbeeld uitgelegd

Hier declareren we twee eigenschappen: message1 en message2. Vervolgens maken we twee klassen: Welcome en Welcome2. De eerste klasse (Welkom) gebruikt de eigenschap message1 en de tweede klasse (Welkom2) gebruikt zowel de eigenschappen message1 als message2 (meerdere eigenschappen worden gescheiden door komma's).