Frage zu PHP-Klassen

Prophet05

Erfahrenes Mitglied
Ich erstrelle mir gerade eine Klasse mit PHP. Da ich mich auch schon mit C++ beschäftigt habe wollte ich wissen ob die Schreibweisen die ich von dort kenne auch in PHP möglich sind.

Schreibweise die ich in PHP Benutze:
PHP:
<?php
  class Klasse
  {
     var $variable1;
     var $variable2;
  
     function Klasse()
     { /*Konstruktor*/}
  
     funktion Funktion1()
     {}
  }
  ?>

Fragen:

1. Kann ich die Funktionen wie in C++ auch ausserhalb der Klasse daklarieren:
Code:
  class Klasse
  {
     function Funktion1();
  }
  
  function Klasse::Funktion1()
  {}

2. Gibt es in PHP-Klassen eine Unterscheidung zwischen Private und Public?

3. Warum benötigen Klassen-Variablen ein var?

MfG Prophet05
 
Ok deine Links haben alle Fragen beantwortet, Danke!

zu 1: Ich finde es einfach übersichtlicher es ausserhalb zu deklarieren.

MfG Prophet05
 
Ich glaube, du programmierst zu viel C++.
"Was man mit new erstellt, muss man mit delete wieder löschen"

in PHP gibt es kein Delete. Meines wissens, nur in C++. Sogar in C# wird kein delete mit verwendet, da ein Prozess (dessen Name ich jetzt allerdings nicht genau weiss) alle nicht mehr benötigten Objekte killt. PHP ist in Interpreter. Sobald die Website fertig erstellt ist, wird diese an den Browser des Users in HTML Format gesendet und der gesamt benötigte Speicher wird wieder freigegeben.

So Long
 
es gibt allerdings __construct() und __destuct() damit hast Du einen ´constructor` sowie einen destructor. Der destructor wird meines Wissens automatisch aufgerufen sofern du ihn definiert hast, andernfalls wird das Object einfach gelöscht. was constructor und destuctor sind brauchich an der Stelle wohl nicht zu erklären :-)
mehr dazu:
http://www.php.net/manual/de/language.oop5.decon.php
 
Zuletzt bearbeitet:
Das Problem ist die gibt es erst in PHP5 und auf meinem Server ist PHP4. Gut wenn ich aber nun zum beispiel in schleife einem Objekt immer wieder neu initialisiere dann funkt da doch da alte (mit dem selben namen) dazwischen deswegen würde ich das ganze gerne aus dem weg räumen sonst wäre es egal da habt ihr recht.
Beispiel:
PHP:
<?php
  for($i = 0;$i < 10;$i++)
  {
Klasse $objekt = new Klasse();
  }
  ?>
Stören sich die Objekte da nicht?
 
Also ich wüsste nicht was sichda stören sollte da du ja immer neue Objekte erstellst und sie der selben Refferenz zuweist. Bin mir jetzt ned sicher ob Du damit nicht ienfach nur den Speicher des Servers zumüllst.

Du kannst soweit ich das sehe Objekte auch direkt löschen
gugst Du hier:
http://www.php.net/manual/de/function.unset.php
oder
http://www.php.net/manual/de/function.register-shutdown-function.php
Ich weiß allerdings nicht inwieweit das funktionier.
meiner Ansicht nach solten bei deiner for Schleife keine Probleme auftreten
Die nicht zugewiesen Objekte verschwinden spätestens zum Laufzeit Ende aus dem Speicher.
 
Hallo,
als C++'ler solltest du wissen, dass Variablen, welche innerhalb eines Blocks definiert wurden, nach Beendigung des Blocks wieder aus dem Speicher geworfen werden.

z.B.
PHP:
 for($i = 0; $i < 2; $i++){
	$x = 0
	echo $x.'<br>';
	$x++;
}

Ausgabe:
Code:
0 
0

aKraus hat gesagt.:
Ich glaube, du programmierst zu viel C++.
"Was man mit new erstellt, muss man mit delete wieder löschen"

in PHP gibt es kein Delete. Meines wissens, nur in C++. Sogar in C# wird kein delete mit verwendet, da ein Prozess (dessen Name ich jetzt allerdings nicht genau weiss) alle nicht mehr benötigten Objekte killt. PHP ist in Interpreter. Sobald die Website fertig erstellt ist, wird diese an den Browser des Users in HTML Format gesendet und der gesamt benötigte Speicher wird wieder freigegeben.

So Long

zum 2x:
Behandle Objekte in PHP bei der Speicherfrage wie Variablen - nur C++ verhält sich anders!

Greatz
 
Zuletzt bearbeitet:
Zurück