WinFuture-Forum.de: [php] Klassen Schneller Als Squenzen? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

[php] Klassen Schneller Als Squenzen?


#1 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 18. November 2005 - 11:41

Bin momentan dabei für mein neues Projekt eine kleine zugeschneiderte Template-Engine zu bauen.
Nun stellt sich für mich die Frage, welche Vorteile mir die Klasse in dem Zusammenhang bringt. Oft habe ich es schon gesehen, dass Template-Engines durch Klassen realisiert werden.
Habe mal folgende erzeugt:
// Template Klasse
class template
{
	var $inhalt;
	
	function laden($pfad, $file)
	{
		$this->inhalt = file_get_contents($pfad.$file);
	}
	
	function ersetzen($string, $replace)
	{
		$this->inhalt = str_replace("{".$string."}", $replace, $this->inhalt);
	}
	
	function einfuegen($string, $pfad, $file)
	{
		$this->inhalt = str_replace("{".$string."}", file_get_contents($pfad.$file), $this->inhalt);
	}
	
	function ausgeben()
	{
		echo $this->inhalt;
	}
	
}

$tpl = new template;
$tpl->laden('','template.tpl');
$tpl->ersetzen('user','Hasch');
$tpl->einfuegen('replace','','tpl2.tpl');
$tpl->ersetzen('page','ngd-systems.de');
$tpl->ausgeben();


Hätte diese Klasse irgendeinen Vorteil zu einer Sequenzen Anordnung, d.h. setzen der auch in der Klasse genannten Funktionen?
Einziger für mich ersichtlicher Vorteil ist, dass nicht immer wieder der Inhalt der Variable $tpl in eingesetzt werden muss und die Variable neu deklariert werden muss.
Über Hinweise und Antworten bin ich sehr dankbar.
0

Anzeige



#2 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 18. November 2005 - 14:00

Klassen erlauben einen ordentlicheren und wiederverwendbareren Code. In wie fern deine Implementierung jetzt vorteilhaft ist oder nicht ist eine andere Frage :cool:
0

#3 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. November 2005 - 15:06

btw...warum benutzt nicht direkt richtiges OO? Also, den Einsatz von Schlüsselwörtern, wie public oder private?

Ggf bekommst du einen kleinen Geschwindigkeitsvorteil wenn du direkt mit Referenzen arbeitest, quasi: $tpl =& new template();
0

#4 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 18. November 2005 - 15:17

Beitrag anzeigenZitat (Witi: 18.11.2005, 15:06)

btw...warum benutzt nicht direkt richtiges OO? Also, den Einsatz von Schlüsselwörtern, wie public oder private?

Ggf bekommst du einen kleinen Geschwindigkeitsvorteil wenn du direkt mit Referenzen arbeitest, quasi: $tpl =& new template();

Erkläre mir mal bitte, was du mit Schlüsselwörtern meinst? (Habe gerade erst mit OOP angefangen...)
Wieso würde mir $tpl =& new template(); einen Geschwindigkeitsvorteil bringen? (Habe doch gar keine Function, die template() heißt :blink: ).

Danke jedenfalls schonmal im Voraus.
0

#5 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 18. November 2005 - 19:05

Private und Public würde ich erstmal vergessen, das geht mit PHP 4 nämlich noch nicht. Das mit der Referenz halte ich ebenfalls für Unsinn (genaugenommen habe ich eine solche Vorgehensweise bisher noch nie gesehen). Jede andere Optimierung deines Codes würde mit sicherheit wesentlich mehr Geschwindigkeit bringen als die Referenz.

Dieser Beitrag wurde von Floele bearbeitet: 18. November 2005 - 19:05

0

#6 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 18. November 2005 - 20:10

Danke. Das mit der Referent habe ich ausprobiert, dies verlangsamt meinen Code.
Könntet ihr mir mal nen Link oder eine Erklärung zu Referenz, Public und Private geben. Wäre euch dankbar. Habe dazu in meinem PHP-Buch nichts gefunden.

EDIT: Das Template läuft auf PHP5.

Dieser Beitrag wurde von hasch bearbeitet: 18. November 2005 - 20:24

0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. November 2005 - 20:12

mit new template(); rufst du den Konstruktor der Klasse template auf und erstellt dir somit ein Objekt der Klasse template. (Klassen werden übrigens immer groß geschrieben, also Template).

Angenommen, du hast eine Methode getTemplate(), die dir schon sämtliche Variablen belegt und dir dann ein Template-Objekt zurückliefert. Würdest du ohne =& arbeiten, würdest du "nur" eine Kopie des erstellten Objektes bekommen und so bekommst eine Referenz auf das Objekt, quasi genau das Objekt.
In meinen Augen muss das schneller sein.

Private und Public würde ich erstmal vergessen, das geht mit PHP 4 nämlich noch nicht

Das stimmt leider. Aber mal ganz ehrlich...Was ist OOP ohne die Schlüsselwörter?
0

#8 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 18. November 2005 - 20:28

Beitrag anzeigenZitat (Witi: 18.11.2005, 20:12)

(Klassen werden übrigens immer groß geschrieben, also Template).


Seit wann das denn?

Zitat

Das stimmt leider. Aber mal ganz ehrlich...Was ist OOP ohne die Schlüsselwörter?


Was ist nicht-funktionierendes OOP mit Schlüsselwörtern? :blink:
0

#9 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. November 2005 - 23:34

Beitrag anzeigenZitat (Floele: 18.11.2005, 20:28)

Seit wann das denn?

In jeder richtigen OO-Programmiersprache wird das so gehandhabt...

Zitat

Was ist nicht-funktionierendes OOP mit Schlüsselwörtern? :blink:


1:0 für dich :D

Wobei das imo in php5 mittlerweile ziemlich gut funktioniert. Nur sowas wie __construct() finde ich sehr seltsam...
0

#10 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 19. November 2005 - 15:13

Beitrag anzeigenZitat (Witi: 18.11.2005, 23:34)

In jeder richtigen OO-Programmiersprache wird das so gehandhabt...


Dann habe ich wohl was verpasst. Eine solche Vereinbarung ist mir bisher weder bei C++ noch bei PHP untergekommen.
0

#11 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 19. November 2005 - 16:00

Dann guck dir mal die aktuellen APIs einiger Sprachen an. Z.B.
Java oder .NET (Namespace System)
Du wirst auch in C++-APIs keine Klassen finden, die klein geschrieben sind.
Außerdem, Auto auto = new Auto() sieht einfach besser aus als auto auto = new auto(); (Wobei das letzte wahrscheinlich nicht funktionieren dürfte)

Edit: vielleicht überzeugt dich das: Groß-Kleinschreibung

Dieser Beitrag wurde von Witi bearbeitet: 19. November 2005 - 16:05

0

#12 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 19. November 2005 - 16:14

Beitrag anzeigenZitat (Witi: 19.11.2005, 16:00)

Edit: vielleicht überzeugt dich das: Groß-Kleinschreibung


Ist nicht so ganz überzeugend ;)

Zitat

The requested URL /openbook/javainsel3/javainsel_060004. htm was not found on this server.

0

#13 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 19. November 2005 - 16:17

Sorry...Das müsste ein Bug im Forum sein. Es wird irgendwie automatisch ein Leerzeichen zwischen 060004. und htm gemacht.
Im "Editier-Menü" ist es nicht da...
Einfach das Leerzeichen wegmachen, dann müsste es gehen, also openbook/javainsel3/javainsel_060004.htm
0

#14 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 19. November 2005 - 16:18

http://www.galileocomputing.de/openbook/ja...ibungwichtigist ;)
0

#15 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 19. November 2005 - 16:21

Beitrag anzeigenZitat (stefanra: 19.11.2005, 16:18)


Auch bei dir wird ein Leerzeichen eingefügt ;)
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0