19 Stimmen

Lohnt sich der Einsatz von OOP in PHP?

Es gibt viele Debatten darüber, ob objektorientierte Programmierung gut ist oder nicht. Aber die Verwendung von OOP in Php ist langsamer. Wäre es ein guter Tausch zwischen prozeduraler Programmierung und schnellerer Geschwindigkeit und OOP mit langsamerer Geschwindigkeit (da Klassen jedes Mal, wenn eine Seite geladen wird, initiiert werden müssen und große Websites anfangen, langsam zu werden).

Noch wichtiger ist, wäre es gut, Sachen innerhalb einer Klasse zu verpacken und statische Funktionen zu verwenden oder wäre es besser, nur viele liegende Funktionen mit einem Präfix ex: wp_function() zu haben.

4voto

Hobbes Punkte 775

Ich war selbst neugierig darauf. Nachdem ich meinen Code von prozedural auf oop umgestellt hatte, habe ich leider einige Benchmarks durchgeführt und nicht vorher.

Hier ist der Benchmark-Code.

class game{
  function maxp($val){
    return max(0,pow($val,0.5));        
  }
}

$game = new game;

for($i=0;$i<100000;$i++){
  $game->maxp(100);
  //game::maxp(100);
}

Die OOP-Ergebnisse lagen zwischen 0,13 und 0,2 Sekunden;

Die Ergebnisse der Verfahren lagen zwischen 0,08 und 0,1 Sekunden.

Die Ergebnisse blieben über einen langen Zeitraum hinweg konstant.

Ich möchte Sie ermutigen, Ihre eigenen Tests durchzuführen.

php 5.4.3

3voto

Sarfraz Punkte 366217

OOP hat mehr Vorzüge als Nachteile. Siehe PHP OOP, Was sind die Vorteile? . Siehe auch für OOP vs. PP in PHP .

3voto

Rikaelus Punkte 535

Es gibt wirklich keine perfekte Antwort, da sie von so vielen unbekannten Variablen abhängt, und dann muss es nicht alles oder nichts sein.

Wenn Sie zum Beispiel Ihre Anwendung in das MVC-Modell aufteilen, könnten Sie Ihr Modell OO sein lassen, aber den Controller eher prozedural halten.

Sie können Klassen verwenden, um einfach gemeinsame statische Funktionen zu gruppieren, oder Sie können das Muster des aktiven Datensatzes noch weiter ausbauen.

Wenn Sie ein kleines, einseitiges Webformular erstellen, das eine POST in einer E-Mail verschickt, brauchen Sie wirklich kein OO - es sei denn, Sie verwenden eine vorhandene Mail-Klasse, die Sie nutzen können.

Niemand kann Ihnen einen guten Rat geben, ohne das Projekt zu verstehen, das Sie in Angriff nehmen.

Wenn es Ihnen allerdings nur um die Geschwindigkeit geht, dann ist OO wird etwas langsamer sein. Und es gibt eine Menge raffinierter Dinge, die man selbst in prozeduralem PHP tun kann, um einige der OO-Vorteile zu imitieren. Aber wenn Sie nicht gerade ein riesiges Projekt in Angriff nehmen, wird der zusätzliche Aufwand nie viel ausmachen. Und wenn Sie dann ein großes Projekt haben, überwiegen die Vorteile von OO vielleicht die Nachteile des Overheads.

2voto

Chris Punkte 7127

Ja, wenn Ihre Anwendung wächst (und das wird sie), wird sie Ihnen viele Stunden der Frustration ersparen. Und sich selbst zu wiederholen (Code überall zu kopieren und einzufügen) :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X