Frage

Es gibt viele Debatten darüber, ob objektorientierte Programmierung gut ist oder nicht. Aber ist die Verwendung von OOP in PHP langsamer. Wäre es ein gutes Geschäft seiner prozeduralen Programmierung zu nutzen und schnelle Geschwindigkeit und OOP mit langsamer Geschwindigkeit (da Klassen haben jedes Mal, wenn eine Seite geladen wird und große Websites eingeleitet werden beginnen, langsam zu werden).

Noch wichtiger ist, wäre es gut zu wickeln Sachen innerhalb einer Klasse und Verwendung statischer Funktionen sein oder wäre es besser, nur viele liegenden Funktionen mit einem Präfix ex hat. Wp_function ()

War es hilfreich?

Lösung

Ja, ist es fast immer eine gute Idee zu verwenden OOP. Dies liegt daran, OOP eine Art der Codierung ist, und die Kodierung der Arten zum größten Teil ist leicht in der Lage accross Sprachen übertragen werden.

Die Menschen verwenden keine Codierung-Arten, weil sie eine bestimmte Sprache. Die Leute benutzen Codierung Stile, weil der Stil bietet gute Methoden der Codierung Dinge, die sie wünschenswert fühlen zu tun sind. Deshalb, solange die Grundelemente sind (Vererbung, Klasseneigenschaften, usw.), es wird immer lebensfähig sein in schreiben, dass Codierstil.

Nein, mit verfahrenstechnischen Funktionen für den Zugriff ist sie wahrscheinlich keine gute Idee. Dies liegt daran, Sie wahrscheinlich so etwas zu tun haben, um den Zustand beizubehalten.

function myFunc()
{
    global $class;
    $class->doMethod();
}

function myFunc2()
{
    global $class;
    $class->doMethod2();
}

Dies ist eine schlechte Idee, da es eine Tonne globalen Zustand erzeugt.

Andere Tipps

Wenn der Grund, warum Sie über die Verwendung von OO besorgt sind mit PHP Geschwindigkeit ist, fürchtet sich nicht: PHP ist eine langsame Sprache ganz herum. Wenn Sie etwas tun, dass die prozessorintensive genug für den Geschwindigkeitsverlust von Objekten mit der Materie, sollten Sie nicht PHP überhaupt werden.

Im Hinblick auf die statischen Funktionen, das ist eine Design-Wahl, aber ich würde auf der Seite irren Klassen zu vermeiden, ganz aus statischen Funktionen aus. Es gibt wirklich keinen Vorteil, um es über Präfixe, und unter Verwendung eines Konstrukts, nur weil es da ist, ist keine gute Idee.

Die gleichen Argumente über die Leistung wurden über Objective-C und C ++ zurück in den Tag. Und die Antwort auf dieses Problem war Vorteil der verfügbaren Speichers zu nehmen und Verarbeitungsleistung, die kontinuierlich wird immer größer, besser und schneller.

Ja, erfordert OO mehr Ressourcen zu laufen. Aber die Vorteile von OO mit schwerer wiegen als die Hardware-Kosten $$ (was wahrscheinlich unbedeutend sein soll) von OO-Anwendungen unterstützt.

Es ist jedoch eine gute Sache über die Leistungsfähigkeit der Software zur Beunruhigung. Jedoch suchen unter der Haube des Verfahrens gegen oo als ein Anfang ein bisschen fehlgeleitet ist. Sie müssen sich auf das Schreiben von effizientem Code fokussiert werden zu beginnen, ob Verfahrens- oder OO (und beide sind relevant).

Beachten Sie, dass, obwohl PHP nicht die schnellste Plattform sein kann, da draußen (Java, zum Beispiel, seinen Hintern tritt) PHP an der Macht über das Internet einige der Verkehr schweren Websites verwendet wird. Nämlich Facebook

Wenn Sie weitere Zweifel an PHP und OO haben, schauen Sie einfach bei Zend und Magento (basierend auf Zend). Magento ist eine sehr ressourcenintensive Plattform, die Speichernutzung nach oben von 36MB pro Instanz sein kann. Allerdings ist die Plattform selbst in der Lage von Millionen von Treffern Handhabung. Dies liegt daran, eine richtig konfigurierte Server-Umgebung mit einer gesunden Portion von Hardware-Ressourcen alle Vorteile machen sich OO weit übertreffen die Kosten für den Server zu verwenden. Aber in einer Welt von gruppierten Computern, nicht mit der Rechenleistung und Speicher (verantwortlich) für Sie da ist - meiner Meinung nach -. Klinische Wahnsinn

In meiner bescheidenen Meinung nach, sollte PHP-Entwickler nicht versuchen zu gehen nur eine Richtung. (Verfahren vs objektorientiert) In einigen Fällen alles, was Sie brauchen ein paar globalen Funktionen ist, ein anderes Mal ist es von Vorteile für den Einsatz Objekte. Versuchen Sie nicht, Kraft alles eine oder andere Weise, flexibel sein und verwenden, was für jede Situation am besten funktioniert.

Ich bin nicht einverstanden mit stark Chacha102 Antwort.

Eine richtige Antwort auf diese Frage würde mehrere Bücher füllen -. Nie hier eine 20-Linie Post dagegen

Beide Ansätze ihre Vor- und Nachteile haben. Ich würde jedem empfehlen, der will, sich einen guten Programmierer betrachten in verfahrens erhebliche Erfahrung zu haben, nicht-prozedurale und objektorientierte Programmierung. Neben Erfahrungen mit verschiedenen Methoden wie SCRUM, Kaskade und RAD.

In Bezug auf PHPs Eignung für OO vs Verfahren Codierung, sicherlich die Wurzeln der Sprache sind in dem zweiten (aber beachten Sie, dass Java und ASP sind Hybrid eher als echte OO-Sprachen).

Peronally, neige ich dazu, prozeduralen Code zu schreiben, wenn ich etwas brauche zu erzeugen, die entweder sehr einfach oder muss sein Verhalten muß thouroughly und vorhersehbar definiert werden. Jedoch, wenn komplexen Code zu schreiben, wo das Verhalten stark zur Laufzeit variieren, ich OO seine weitaus effizienter in Bezug auf Entwicklungszeit finden -. Trotz der Konstruktion um eine endliche Menge von Anwendungsfällen basierte

argumentieren, dass Sie immer prozeduralen Code schreiben sollen, weil es schneller als OO-Code ausgeführt werden:

1) ist nicht unbedingt wahr 2) völlig ignoriert die relativ Kosten der Entwicklungszeit vs Hardware-Kosten

  

wäre es gut zu wickeln Sachen innerhalb einer Klasse und Verwendung statischen Funktionen sein

Da die Namespaces in PHP jetzt verfügbar sind, ist dies ein wirklich chaotisch Weg, um Namespace-Kollisionen zu vermeiden und nicht etwas, was ich empfehlen würde.

C.

Es gibt wirklich keine perfekte Antwort, da es auf so viele unbekannten Variablen abhängt, und dann ist es nicht alles oder nichts sein.

Zum Beispiel, wenn Sie Ihre Anwendung in das MVC-Modell aufgeteilt, können Sie Ihr Modell sein OO haben aber die Steuerung mehr vereinfachend Verfahren halten.

Sie Klassen als Mittel, um einfach Gruppe gemeinsame statische Funktionen nutzen könnten, oder man könnte es Muster viel weiter in die aktiven Datensatz nehmen.

Wenn Sie den Aufbau einer kleinen Single-Seite Webformular, dass schießt ein POST aus in einer E-Mail, die Sie wirklich tun OO nicht brauchen -., Damit Sie vielleicht eine bestehende E-Mail-Klasse Hebel umfassen

Niemand kann Ihnen eine angemessene Beratung geben, ohne zu verstehen, das Projekt Sie nehmen auf.

Das heißt, wenn Ihre einzige Sorge Geschwindigkeit ist, dann OO wird langsamer leicht. Und es gibt eine Menge Dinge, die Sie hinterhältig in sogar prozedurale PHP zu imitieren einige der OO Gewinne machen können. Aber es sei denn, Sie nehmen auf einem riesigen Projekt, die zusätzlichen Aufwand wird nie zu viel betragen. Und von der Zeit haben Sie ein riesiges Projekt, die Profis von OO könnten die Nachteile seines Kopfes aufwiegen.

Ich war von dieser selbst neugierig. Leider, nachdem ich meinen Code aus verfahren geändert oop lief ich einiges Benchmarks 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);
}

OOP Ergebnisse lagen im Bereich zwischen 0,13 und 0,2 Sekunden;

Verfahrensergebnisse lagen im Bereich zwischen 0,08 und 0,1 Sekunden.

Die Ergebnisse entsprachen weiterhin über eine gute Länge der Zeit.

Ich ermutige Sie, Ihre eigenen Tests auszuführen.

php 5.4.3

hat OOP mehr verdient als die de-Vorzüge. Siehe PHP OOP, was sind die Vorteile? sind. siehe auch für OOP vs PP in PHP .

Ja, wie Ihre Anwendung wächst .. (und es wird) wird es Ihnen viele Stunden der Frustration sparen. Und selbst zu wiederholen (Kopieren Code einfügen ganzen Ort) ..:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top