php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 06-02-2010, 00:55
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von combie Beitrag anzeigen
[grins]
Wenn man einmal begriffen hat, wie ein Hammer funktioniert, dann sieht die ganze Welt plötzlich wie ein Nagel aus.
[/grins]
Das gilt auch für Iteratoren (im Speziellen) und die SPL (im Allgemeinen).


Zitat:
Zitat von trashbarg
Tja, in punkto Software-Entwicklung gibt es kaum einen Hammer, den ich seit 1974 nicht in der Hand gehabt habe ...
Wuhaa, da waren einige von uns ja noch nicht einmal geboren ...!

Zitat:
Zitat von trashbarg
Die Zahl der sinnvollen Anwendungen ist unbegrenzt und statische Methoden und Eigenschaften sind für fortgeschrittenes Programmieren wirklich unerlässlich ...
Es soll objektbasierte Sprachen geben, die kennen sowas wie Klassen (und damit statische Methoden) gar nicht. Du willst doch nicht sagen, dass mit denen kein "fortgeschrittenes Programmieren" möglich wäre? Gerade für das von dir als Beispiel angegebene Problem ...

Zitat:
Zitat von trashbarg
Als einfaches Beispiel sei genannt, wenn man die Anzahl instanziierter Objekte einer Klasse benötigt, weil man beim ersten instanziierten Objekt eine Verbindung irgendwohin öffnet, die man beim letzten zerstörten Objekt wieder schließt.
... gibts auch Lösungen ohne Klassen.

Außerdem finde ich Klassen in PHP sowieso nur halbherzig implementiert: Es fehlt soetwas wie Konstruktoren und Destruktoren für Klassen. Eine vernünftige Benutzung von "self" wurde versemmelt, um in PHP 5.3 für das Schlüsselwort "static" noch eine zusätzliche Verwendung einbauen zu können. Das sieht mir nicht nach planvollem Vorgehen aus. Aber als billiger Namespace-Ersatz haben Klassen in PHP (kleiner 5.3) ganz gut getaugt.
Mit Zitat antworten
  #17 (permalink)  
Alt 06-02-2010, 01:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Das gilt auch für Iteratoren (im Speziellen) und die SPL (im Allgemeinen).
Richtig...!

Und das mit dem Self und den Klassen Constructoren wird sicherlich nicht vor PHP 9.6.3 eingeführt.


---------------
Zitat:
Als einfaches Beispiel sei genannt, wenn man die Anzahl instanziierter Objekte einer Klasse benötigt, weil man beim ersten instanziierten Objekt eine Verbindung irgendwohin öffnet, die man beim letzten zerstörten Objekt wieder schließt.
Was passiert, wenn du mal eine zweite, gleichartige, bzw. ähnliche Verbindung brauchst?
Alles doppelt schreiben? Weil, vererben geht ja nicht....
Oder irgend ein Gefuddel mit Arrays und get_called_class()?

Wäre es nicht besser den Objekten die Verbindung zu übergeben?
Z.B. über den Constructor, oder Setter...
Wenn dann alle Objecte "verbraucht" sind, gibts keine Referenz mehr auf die Verbindung und sie wird automatisch von GC entsorgt, incl. Destructor Aufruf. Sofern die Verbindung denn in einer Klasse gekapselt ist.
Vererben: Kein Problem.
Mehrfach Verbindungen: Kein Problem.

Meine Meinung: Für diesen Zweck brauchts kein "static".
__________________
Wir werden alle sterben

Geändert von combie (06-02-2010 um 01:31 Uhr)
Mit Zitat antworten
  #18 (permalink)  
Alt 06-02-2010, 20:04
thrashbarg
 Registrierter Benutzer
Links : Onlinestatus : thrashbarg ist offline
Registriert seit: Feb 2010
Ort: Nordrhein-Westfalen
Beiträge: 3
thrashbarg befindet sich auf einem aufstrebenden Ast
Standard Mea culpa

@combie und @Kropff

für meine Äußerung möchte ich mich ausdrücklich entschuldigen. Auch wenn bis dahin kein Versuch einer sachlichen Erklärung für die Aussage
["static" sollte man meiden, so wie der Teufel das Weihwasser] gemacht wurde, rechtfertigt das nicht eine unsachliche Antwort meinerseits.

Aber was soll das heißen, "Statische Methoden und Eigenschaften machen die Vererbung kaputt" ?

Und die Antwort auf mein (zugegebenermaßen sehr simples) Beispiel verstehe ich ehrlich nicht so ganz. Warum geht vererben nicht, wenn man mal kleinere Bugs bei der Implementierung in PHP außen vor läßt, die aber mit dem Prinzip ja nichts zu tun haben ? Und wo soll die Verbindung herkommen, die ich den Objekten mitgebe ? Außerhalb erzeugt ? Woher weiß ich, welches Objekt das zuerst erzeugte ist, damit ich die Verbindung generieren und übergeben kann. Oder generiere ich sie auf Verdacht, obwohl evtl. gar kein Objekt erzeugt wird, weil ich diese nur brauche, wenn irgendwelche Exceptions geworfen werden ? Und wo residiert diese Verbindung dann, in einer globalen Variablen ? Das hat dann aber mit OOP nicht mehr viel zu tun ...
Und daß mit dem Zerstören des letzen Objekts keine Referenz mehr auf die Verbindung existiert halte ich, bei Übergabe an eine Methode, für ein Gerücht.
Mein Beispiel zielte aber auch eindeutig auf den Fall hin, daß ich für eine beliebige Anzahl Objekte einer Klasse immer die gleiche Verbindung brauche, weil ich zum Beipiel Fehlermeldungen loggen oder den System-Administrator anmailen möchte.

Ich möchte jedenfalls bei der Entwicklung komplexer Anwendungen auf die statischen Methoden und Eigenschaften nicht verzichten.

Man muß sie sicherlich nicht nutzen, aber da wo sie Sinn machen kann man sie schwerlich ersetzen.

Zum Thema "fortgeschrittenes Programmieren" kann ich auch die späten Artikel von Edsger W. Dijkstra empfehlen, der sich gewagt hat, folgendes zu behaupten: "Object-oriented programming is an exceptionally bad idea which could only have originated in California". Man kann ihn sicherlich kontrovers diskutieren, aber mir gefällt, daß er nicht an "Gott-gegebene Prinzipien" in der Software-Entwicklung geglaubt hat, wie so viele Informatiker heutzutage.

Objekt-orientierte und Objekt-basierte Sprachen sind übrigens auch zwei verschiedene Paar Schuhe, das bedeutet Äpfel mit Birnen zu vergleichen.
Mit Zitat antworten
  #19 (permalink)  
Alt 06-02-2010, 20:22
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von thrashbarg Beitrag anzeigen
@combie und @Kropff
für meine Äußerung möchte ich mich ausdrücklich entschuldigen.
Damit ist von meiner Seite aus das Thema erledigt.
Zitat:
Zitat von thrashbarg Beitrag anzeigen
Ich möchte jedenfalls bei der Entwicklung komplexer Anwendungen auf die statischen Methoden und Eigenschaften nicht verzichten.

Man muß sie sicherlich nicht nutzen, aber da wo sie Sinn machen kann man sie schwerlich ersetzen.
Dem stimme ich voll zu!
Zitat:
Zitat von thrashbarg Beitrag anzeigen
Zum Thema "fortgeschrittenes Programmieren" kann ich auch die späten Artikel von Edsger W. Dijkstra empfehlen, der sich gewagt hat, folgendes zu behaupten: "Object-oriented programming is an exceptionally bad idea which could only have originated in California". Man kann ihn sicherlich kontrovers diskutieren, aber mir gefällt, daß er nicht an "Gott-gegebene Prinzipien" in der Software-Entwicklung geglaubt hat, wie so viele Informatiker heutzutage.
Das sehe ich persönlich ähnlich. OOP erzeugt immer einen ziemlichen "Wasserkopf". Und da muss man abwägen. Vielleicht liegt es auch einfach nur daran, dass Studenten nichts anderes mehr lernen. OOP ist eine wunderbare Sache, wenn man eine gemeinsame und einheitliche Basis für mehrere Programmierer benötigt. Aber es ist weiß Gott nicht der Stein der Weisen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #20 (permalink)  
Alt 06-02-2010, 20:47
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Punkt 1:
Du spricht von "einer" Verbindung.
Aber ob nur "eine" oder auch mal "drei" gebraucht werden ist eine Anforderung der Applikation. Trägt man diese Anforderung "eine Verbindung" tief in untergeordnete Klassen hinein, dann leidet die Wiederverwendbarkeit dieser Klassen, ein Hauptvorteil der OOP ist damit verloren.

Und die 2:
Und nunja, dass du dem GC nicht traust, da kann ich dann auch nix daran machen...


PS:
Ich habe nicht gesagt, man darf static nicht verwenden, sondern man sollte es meiden.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #21 (permalink)  
Alt 06-02-2010, 20:53
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
PS:
Ich habe nicht gesagt, man darf static nicht verwenden, sondern man sollte es meiden.
Das sehe ich anders. Wenn mehrere Objekte eine gemeinsame Basis benötigen, so sind statische Methoden und Eigenschaften eine Form von Kommunikation zwischen den einzelnen Objekten.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #22 (permalink)  
Alt 06-02-2010, 21:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Das sehe ich anders. Wenn mehrere Objekte eine gemeinsame Basis benötigen, so sind statische Methoden und Eigenschaften eine Form von Kommunikation zwischen den einzelnen Objekten.

Peter
Wie wäre es mal mit einem konkreten Beispiel...
__________________
Wir werden alle sterben
Mit Zitat antworten
  #23 (permalink)  
Alt 07-02-2010, 20:25
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Das sehe ich anders. Wenn mehrere Objekte eine gemeinsame Basis benötigen, so sind statische Methoden und Eigenschaften eine Form von Kommunikation zwischen den einzelnen Objekten.
Das wäre EIN Weg von mehreren. Du könntest auch ein zusätzliches Objekt erstellen, welches die Zusammenarbeit koordiniert.
Mit Zitat antworten
  #24 (permalink)  
Alt 07-02-2010, 20:31
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Das wäre EIN Weg von mehreren. Du könntest auch ein zusätzliches Objekt erstellen, welches die Zusammenarbeit koordiniert.
Das ist wie so oft Ansichtssache. Viele Wege führen nach Rom. Mich stört es aber, wenn nur ein(!) Weg progagiert wird. Wenn statische Eigenschaften und Methoden aus Sicht der Informatik Müll wären, hätte man sie nicht in diverse Sprachen eingebaut. Ich verweise hier nur auf Singletons.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #25 (permalink)  
Alt 07-02-2010, 20:47
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Ich verweise hier nur auf Singletons.
Die GoF beißen sich sicherlich mittlerweile in den Hintern, dass sie das mit aufgenommen haben...
Und auch für mich ist das eine echtes "anti Pattern".
__________________
Wir werden alle sterben

Geändert von combie (07-02-2010 um 20:52 Uhr)
Mit Zitat antworten
  #26 (permalink)  
Alt 07-02-2010, 21:08
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Was ist ein GoF? Ich kenne die FoBs und die FoGs. Aber GoFs? Btw: Ein Singleton ist kein Anti-Pattern. Es wurde nur zu oft bei jedem Mist progagiert. Zum Beispiel bei Datenbank-Verbindungen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #27 (permalink)  
Alt 07-02-2010, 21:30
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Die "Gang of Four" haben ein durchaus lesenswertes Buch geschrieben.
u.A. hier erwähnt: Entwurfsmuster ? Wikipedia

Zitat:
Es wurde nur zu oft bei jedem Mist progagiert. Zum Beispiel bei Datenbank-Verbindungen.
100% richtig!
__________________
Wir werden alle sterben
Mit Zitat antworten
  #28 (permalink)  
Alt 08-02-2010, 13:56
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Das ist wie so oft Ansichtssache. Viele Wege führen nach Rom. Mich stört es aber, wenn nur ein(!) Weg progagiert wird.
Da widerspreche ich dir nicht.

Zitat:
Wenn statische Eigenschaften und Methoden aus Sicht der Informatik Müll wären, hätte man sie nicht in diverse Sprachen eingebaut.
Wende das Argument mal auf GOTO an ...

Hinzu kommt, dass (statische) Klassen in PHP nunmal "defekt", also nur eingeschränkt zu gebrauchen, sind.

Zitat:
Zitat von Kropff
... Ich verweise hier nur auf Singletons.
Zitat:
Zitat von combie
... Und auch für mich ist das eine echtes "anti Pattern".
Ich habe kein Problem mit dem Singleton-Pattern. Dass es falsch angewandt wird, ist eine Eigenschaft, die es mit anderen Werkzeugen teilt.

OffTopic:

Zitat:
Zitat von combie
Die GoF beißen sich sicherlich mittlerweile in den Hintern, dass sie das mit aufgenommen haben...
Das ist mir schnurz. Sowas kommt halt dabei heraus, wenn man die Realität in Schablonen pressen will.



Singletons sind insofern interessant, weil man sie in PHP nur mithilfe von statischen Methoden bauen kann (notfalls noch mit einer "gewöhnlichen" Funktion).

So wie ich das sehe, verhält sich eine Klasse mit statischen Methoden und statischen Eigenschaften auch wie ein Singleton, ist also nur ein anderer Name für (fast) das gleiche Konzept.

Und schließlich ist ein Singleton in PHP eine Alternative zu einer "rein statischen" Klasse, wenn sowas wie ein Konstruktor oder/und ein Destruktor gebraucht wird. Mehr als ein paar skalare Werte kann man einer Klasse bei der "Initialisierung" ja nicht mitgeben, und das "Aufräumen" am Schluss geht nur über Krücken.

Geändert von fireweasel (14-02-2010 um 22:39 Uhr)
Mit Zitat antworten
  #29 (permalink)  
Alt 18-07-2011, 11:36
derschbedsi
 Registrierter Benutzer
Links : Onlinestatus : derschbedsi ist offline
Registriert seit: Jul 2011
Beiträge: 8
derschbedsi befindet sich auf einem aufstrebenden Ast
Standard

Ohmann ... als ich "public static sollte vermieden werden" gelesen hab hörte ich auch auf, den Thread zu verfolgen

Ohne global erreichbare, ungeschützte Objekte sind größere Projekte meist garnicht möglich - ein einzige Zugriffspunkt muss immer uneingeschränkt erreichbar sein wenn die Software lesbar sein soll und/oder von mehr Leuten als nur dem kleinen Hans in seinem Kinderzimmer gebaut wird

Das ist auch durchaus vertretbar - sofern diese variable oder dieses Objekt einigermassen isoliert ist und wirklich nur die wichtigsten Infos / Zugriffspunkte bietet. Das ist nunmal Fakt - da können sich einige Spezis im Internet auch noch so sehr gegen wehren.

Und nun viel Spaß beim Sabbern ob der Ironie meines Nicknames.
Mit Zitat antworten
  #30 (permalink)  
Alt 18-07-2011, 11:43
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von derschbedsi Beitrag anzeigen
Ohne global erreichbare, ungeschützte Objekte sind größere Projekte meist garnicht möglich - ein einzige Zugriffspunkt muss immer uneingeschränkt erreichbar sein
Das stimmt so nicht. Für Schnellschussprojekte oder Machbarkeitsstudien muss man static nicht dogmatisch vermeiden, aber wenn es um Wiederverwendbarkeit und Wartbarkeit geht, ist es gerade bei großen Projekten mehr als sinnvoll, dass man bessere Ansätze verwendet.

Dass große Projekte ohne static nicht auskommen würden, ist aber absolut unzutreffend. Es gibt so viele gute Entwurfsmuster, die einen würdigen Ersatz darstellen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
static überschreiben Sandmann1 PHP Developer Forum 2 01-07-2008 13:02
[Funktion] global / static nur unter Bedingungen? Maranello-550 PHP Developer Forum 4 09-06-2005 19:54
anstelle global $a,$b,$c,$d; -> global CONST; joschua PHP Developer Forum 11 24-01-2003 22:26
code schnipsel für parsing dynamic php in static html faustus PHP Developer Forum 2 05-12-2002 18:18

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:33 Uhr.