it-swarm.com.de

Wofür wird die Funktion __construct verwendet?

Ich habe bemerkt, __construct viel mit Klassen. Ich habe ein wenig gelesen und im Internet gesurft, konnte aber keine Erklärung finden, die ich verstehen konnte. Ich fange gerade mit OOP an.

Ich habe mich gefragt, ob mir jemand eine allgemeine Vorstellung davon geben könnte, was es ist, und dann ein einfaches Beispiel, wie es mit PHP verwendet wird.

188
Levi

__construct wurde in PHP5 eingeführt und ist der richtige Weg, um Ihre Konstruktoren zu definieren (in PHP4 haben Sie den Namen der Klasse für einen Konstruktor verwendet). Sie müssen in Ihrer Klasse keinen Konstruktor definieren. Wenn Sie jedoch Parameter für die Objektkonstruktion übergeben möchten, benötigen Sie einen.

Ein Beispiel könnte so aussehen:

class Database {
  protected $userName;
  protected $password;
  protected $dbName;

  public function __construct ( $UserName, $Password, $DbName ) {
    $this->userName = $UserName;
    $this->password = $Password;
    $this->dbName = $DbName;
  }
}

// and you would use this as:
$db = new Database ( 'user_name', 'password', 'database_name' );

Alles andere wird im PHP Handbuch erklärt: hier klicken

281
Jan Hančič

__construct() ist der Methodenname für den Konstruktor . Der Konstruktor wird nach der Erstellung eines Objekts aufgerufen und ist ein guter Ort, um Initialisierungscode usw. einzufügen.

class Person {

    public function __construct() {
        // Code called for each new Person we create
    }

}

$person = new Person();

Ein Konstruktor kann auf normale Weise Parameter akzeptieren, die beim Erstellen des Objekts übergeben werden, z.

class Person {

    public $name = '';

    public function __construct( $name ) {
        $this->name = $name;
    }

}

$person = new Person( "Joe" );
echo $person->name;

Im Gegensatz zu einigen anderen Sprachen (z. B. Java) unterstützt PHP unterstützt keine Überladung des Konstruktors (dh mehrere Konstruktoren, die unterschiedliche Parameter akzeptieren). Sie können diesen Effekt mit statischen Methoden erzielen.

Hinweis : Ich habe dies aus dem Protokoll der (zum Zeitpunkt dieses Schreibens) akzeptierten Antwort abgerufen.

48
Rob

Es ist eine andere Möglichkeit, den Konstruktor zu deklarieren. Sie können auch den Klassennamen verwenden, zum Beispiel:

class Cat
{
    function Cat()
    {
        echo 'meow';
    }
}

und

class Cat
{
    function __construct()
    {
        echo 'meow';
    }
}

Sind gleichwertig. Sie werden immer dann aufgerufen, wenn eine neue Instanz der Klasse erstellt wird. In diesem Fall werden sie mit der folgenden Zeile aufgerufen:

$cat = new Cat();
18
Logan Serman

Ich denke, das ist wichtig für das Verständnis des Zwecks des Konstruktors.
Selbst nachdem ich die Antworten hier gelesen hatte, dauerte es ein paar Minuten, bis mir klar wurde, und hier ist der Grund.
Ich habe mir angewöhnt, alles, was initiiert wird oder geschieht, explizit zu codieren. Mit anderen Worten, dies wäre meine Katzenklasse und wie ich es nennen würde.

class_cat.php

class cat {
    function speak() {
        return "meow";  
    }
}

somepage.php

include('class_cat.php');
mycat = new cat;
$speak = cat->speak();
echo $speak;

Wobei in @Logan Sermans vorgegebenen "class cat" -Beispielen davon ausgegangen wird, dass jedes Mal, wenn Sie ein neues Objekt der Klasse "cat" erstellen, die Katze "miauen" soll, anstatt darauf zu warten, dass Sie die Funktion aufrufen, um sie miauen zu lassen.

Auf diese Weise dachte ich explizit darüber nach, wo die Konstruktormethode Implizität verwendet, und dies machte es zunächst schwer zu verstehen.

16
ian

Der Konstruktor ist eine Methode, die bei der Klasseninstanziierung automatisch aufgerufen wird. Das heißt, der Inhalt eines Konstruktors wird ohne separate Methodenaufrufe verarbeitet. Der Inhalt einer Klammer mit dem Schlüsselwort class wird an die Konstruktormethode übergeben.

12
Jimmy James

Ich hoffe diese Hilfe:

<?php
    // The code below creates the class
    class Person {
        // Creating some properties (variables tied to an object)
        public $isAlive = true;
        public $firstname;
        public $lastname;
        public $age;

        // Assigning the values
        public function __construct($firstname, $lastname, $age) {
          $this->firstname = $firstname;
          $this->lastname = $lastname;
          $this->age = $age;
        }

        // Creating a method (function tied to an object)
        public function greet() {
          return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
        }
      }

    // Creating a new person called "boring 12345", who is 12345 years old ;-)
    $me = new Person('boring', '12345', 12345);

    // Printing out, what the greet method returns
    echo $me->greet(); 
    ?>

Weitere Informationen erhalten Sie unter codecademy.com

10
Zaman

Das __construct Methode wird verwendet, um Parameter einzugeben, wenn Sie first ein Objekt erstellen - dies wird als "Definieren einer Konstruktormethode" bezeichnet und ist eine gängige Vorgehensweise.

Konstruktoren sind jedoch optional . Wenn Sie also zum Zeitpunkt der Objektkonstruktion keine Parameter übergeben möchten, benötigen Sie diese nicht.

Damit:

// Create a new class, and include a __construct method
class Task {

    public $title;
    public $description;

    public function __construct($title, $description){
        $this->title = $title;
        $this->description = $description;
    }
}

// Create a new object, passing in a $title and $description
$task = new Task('Learn OOP','This is a description');

// Try it and see
var_dump($task->title, $task->description);

Weitere Informationen zu Konstruktoren finden Sie unter das Handbuch .

9
James
class Person{
 private $fname;
 private $lname;

 public function __construct($fname,$lname){
  $this->fname = $fname;
  $this->lname = $lname;
 }
}
$objPerson1 = new Person('john','smith');
7
Hussein

__construct wird immer aufgerufen, wenn neue Objekte erstellt werden, oder sie werden aufgerufen, wenn die Initialisierung stattfindet. Es eignet sich für alle Initialisierungen, die das Objekt möglicherweise benötigt, bevor es verwendet wird. __construct-Methode ist die erste in der Klasse ausgeführte Methode.

    class Test
    {
      function __construct($value1,$value2)
      {
         echo "Inside Construct";
         echo $this->value1;
         echo $this->value2;
      }
    }

//
  $testObject  =  new Test('abc','123');
5
yasir kk

Ich glaube, dass die Funktion __construct () {...} ein Teil des Codes ist, der immer wieder als Ersatz für TheActualFunctionName () {...} verwendet werden kann. Wenn Sie den CLASS-Namen ändern, müssen Sie den Code nicht ändern, da sich das generische __construct immer auf den tatsächlichen Klassennamen bezieht. Sie codieren weniger ... oder?

3
walter

Anmerkung: Übergeordnete Konstruktoren werden nicht implizit aufgerufen, wenn die untergeordnete Klasse einen Konstruktor definiert. Um einen übergeordneten Konstruktor auszuführen, ist ein Aufruf von parent::__construct() innerhalb des untergeordneten Konstruktors erforderlich. Wenn das untergeordnete Element keinen Konstruktor definiert, wird dieser möglicherweise wie eine normale Klassenmethode von der übergeordneten Klasse geerbt (sofern er nicht als privat deklariert wurde).

3
Vignesh

__construct ist eine Methode zum Initialisieren eines neuen Objekts, bevor es verwendet wird.
http://php.net/manual/en/language.oop5.decon.php#object.construct

3
Seyedan

__construct leitet einfach eine Klasse ein. Angenommen, Sie haben den folgenden Code.

Class Person { 

 function __construct() {
   echo 'Hello';
  }

}

$person = new Person();

//the result 'Hello' will be shown.

Wir haben keine weitere Funktion erstellt, um das Wort "Hallo" wiederzugeben. Es zeigt einfach, dass das Schlüsselwort __construct beim Initiieren einer Klasse oder eines Objekts sehr nützlich ist.

0
Harris