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 Thema bewerten
  #16 (permalink)  
Alt 29-03-2012, 20:20
jack88
 Registrierter Benutzer
Links : Onlinestatus : jack88 ist offline
Registriert seit: Mar 2012
Beiträge: 24
jack88 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Was in der Zend-Engine intern vorgeht, muss nichts mit Buchweisheiten über OOP zu tun haben.
Stimmt, aber das bedeutet umso mehr, daß man über die Unterschiede gut Bescheid wissen sollte. Schließlich folgt auch die OO-Implementierung in der Zend-Engine bestimmten Regeln und nicht dem Zufallsprinzip.


Zitat:
Schlimmstenfalls ist das ein Fehler in der Dokumentation (wenn es dort nirgendwo erwähnt wurde.). Das muss man akzeptieren oder sich eine andere Spielwiese suchen. Es gibt schließlich genügend Alternativen mit vernünftig(er)en OOP-Implementierungen.
Manchmal geht es eben nicht anders als sich mit einem Fehler zu arrangieren. Aber auch hier gilt, daß man der Sache immer zuerst auf den Grund gehen muss. Man kann aus Fehlern bekanntlich auch lernen

Zitat:
Ich halte, ehrlich gesagt, nicht sooo viel von Galileo-Books, obwohl ich welche (gedruckt) im Regal stehen habe. Man findet (früher oder später) immer wieder handwerkliche Schwächen, wenn man sich mit ihnen beschäftigt
Und ich halte nichts von Pauschalisierungen. Diese erweisen sich nämlich meistens als falsch.

Zitat:
Konstruktoren (in PHP) gehören aber nicht direkt zur Schnittstelle eines Objektes, sondern zur Klasse. Sie werden (normalerweise) nur über den Operator new aufgerufen
Für Konstruktoren gelten bezüglich der Sichtbarkeit die gleichen Regeln wie für Methoden und Eigenschaften. Wie diese aufgerufen werden ist in diesem Zusammenhang unerheblich.

Zitat:
Und wie dir Quetschi und combie schon erklärt haben, gelten für in PHP eingebaute Klassen eben manchmal andere Regeln als für gewöhnliche, vom Anwender deklarierte, Klassen.
Mag sein, ich weiß es nicht (vielleicht kennt ja jemand ein Beispiel?). Ich kann nur sagen, daß es bei der MySQLi Klasse nicht so ist. Für diese Klasse gelten die gleichen Regeln (zumindest bezogen auf das beschriebene Problem) wie für jede andere „normale“ PHP-Klasse auch.

Zitat:
Diese Schlussfolgerung ist unlogisch, was hat imperative ("prozedurale") Programmierung hiermit zu tun
Ok, das nehme ich zurück

Stimmt nicht ganz. Die Änderung betrifft nur die namespaced-classes. In non-namespaced-classes kannst Du nach wie vor beide Kostruktor-Varianten verwenden.


Zitat:
Methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn't affect non-namespaced classes.
<?php
namespace Foo;
class Bar {
public function Bar() {
// treated as constructor in PHP 5.3.0-5.3.2
// treated as regular method in PHP 5.3.3
}
}
?>
Zitat:
Wenn du jetzt eine praktisch vorkommende Situation beschreiben kannst,...
Ja, gerne – ein mögliches Zukunftsszenario -, wenn die veraltete Konstruktor-Variante irgendwann auch in den non-namespaced-classes abgeschafft wird. Jede Unterklasse die die Sichtbarkeit des Kostruktors der Basisklasse „auf eine unerklärliche Art und gegen die OOP-Regeln“ einschränkt und heute noch prima funktioniert, wird dann sofort Ihre Arbeit verweigern. :-)

Geändert von jack88 (29-03-2012 um 20:26 Uhr)
Mit Zitat antworten
  #17 (permalink)  
Alt 29-03-2012, 20:37
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jack88 Beitrag anzeigen
Stimmt nicht ganz. Die Änderung betrifft nur die namespaced-classes. In non-namespaced-classes kannst Du nach wie vor beide Kostruktor-Varianten verwenden.
Dann verwende eben Namespaces. Dazu sind sie ja da. Die Namespace-lose Programmierung ist als Kompatibilität zu Vorgängerversion zu sehen.

Wenn du "veraltet" programmierst, dann hast du eben noch die veralteten Konstruktoren dabei.
Mit Zitat antworten
  #18 (permalink)  
Alt 29-03-2012, 21:45
jack88
 Registrierter Benutzer
Links : Onlinestatus : jack88 ist offline
Registriert seit: Mar 2012
Beiträge: 24
jack88 befindet sich auf einem aufstrebenden Ast
Standard

@h3ll

na klar - prima Idee, nur wie soll ich einer "veralteten" BuiltIn-Klasse wie MySQLi einen neuen Namensraum zuweisen?
Mit Zitat antworten
  #19 (permalink)  
Alt 29-03-2012, 21:47
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jack88 Beitrag anzeigen
na klar - prima Idee, nur wie soll ich einer "veralteten" BuiltIn-Klasse wie MySQLi einen neuen Namensraum zuweisen?
Sie hat schon einen Namensraum. Den globalen Namensraum. Du musst da gar nix machen.
Mit Zitat antworten
  #20 (permalink)  
Alt 29-03-2012, 22:47
jack88
 Registrierter Benutzer
Links : Onlinestatus : jack88 ist offline
Registriert seit: Mar 2012
Beiträge: 24
jack88 befindet sich auf einem aufstrebenden Ast
Standard

@h3ll
Zitat:
Sie hat schon einen Namensraum.
du sagst es ;-) Und genau das ist auch das Problem, denn im globalen Namensraum dürfen beide Konstruktor-Arten verwendet werden.

Man kann es drehen und wenden wie man will. Es ist eine "kleine" Schwäche in der Konstruktor-Implementierung - vielleicht auch gewollt bzw. bewußt aus Kompatibilitätsgründen in Kauf genommen .

Geändert von jack88 (29-03-2012 um 23:14 Uhr)
Mit Zitat antworten
  #21 (permalink)  
Alt 30-03-2012, 00:33
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 jack88 Beitrag anzeigen
... Schließlich folgt auch die OO-Implementierung in der Zend-Engine bestimmten Regeln und nicht dem Zufallsprinzip.
Nicht dem Zufallsprinzip, aber die Änderungen oder Ver(schlimm)besserungern erscheinen (zumindest mir) doch oft sehr willkürlich ("random").

php.internals: Re: RfC: rethink OO inheritance strictness

Zitat:
Und ich halte nichts von Pauschalisierungen. Diese erweisen sich nämlich meistens als falsch.
Ich finde in meiner Aussage keine Pauschalisierung. Sie beruht auf Erfahrungen, die ich mit Sachbüchern dieses Verlages gemacht habe.

Zitat:
Für Konstruktoren gelten bezüglich der Sichtbarkeit die gleichen Regeln wie für Methoden und Eigenschaften. Wie diese aufgerufen werden ist in diesem Zusammenhang unerheblich.
class method - Should constructors comply with the Liskov Substitution Principle? - Stack Overflow

Zitat:
Mag sein, ich weiß es nicht (vielleicht kennt ja jemand ein Beispiel?).
Wofür? Für die Andersartigkeit von internen und Userland-Klassen oder -Objekten?

Zitat:
Ja, gerne – ein mögliches Zukunftsszenario -, wenn die veraltete Konstruktor-Variante irgendwann auch in den non-namespaced-classes abgeschafft wird. Jede Unterklasse die die Sichtbarkeit des Konstruktors der Basisklasse „auf eine unerklärliche Art und gegen die OOP-Regeln“ einschränkt und heute noch prima funktioniert, wird dann sofort Ihre Arbeit verweigern.
Nein, wieso sollte sie? Bei Aufruf des (PHP-5-)Konstruktors muss die Klasse bekannt sein. Du kannst sie nicht durch eine abgeleitete Klasse ersetzen, ganz im Gegensatz zu einer Objekt-Referenz. Hier kannst du jederzeit eines der Basisklasse durch eines einer abgeleiteten Klasse ersetzen.

Aber möglicherweise reden wir aneinander vorbei. Ich betrachte die PHP-4-Konstruktoren als Altlast und verwende sie nicht. Welche Konstrukte[sic!] man prinzipiell auch damit basteln könnte, in vernünftigem Quellcode haben sie nichts zu suchen.
Mit Zitat antworten
  #22 (permalink)  
Alt 30-03-2012, 11:34
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Niemand zwingt dich im globalen Namensraum Klassen zu erstellen.

Geändert von h3ll (30-03-2012 um 11:39 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
singleton extends


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
if-Abfrage von Sichtbarkeit (visibility) Schnâxélïòn HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 10 14-04-2009 00:36
Sichtbarkeit von Konstanten chrono PHP Developer Forum 15 04-08-2008 15:03
[HTML] Aktion mouseover Sichtbarkeit versetzt Seiteninhalt dondoener HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 8 17-05-2006 21:58
[OOP] PHP5 Klassenkonstanten und Sichtbarkeit st@tic Off-Topic Diskussionen 0 16-04-2005 14:11
[OOP] Programm für UML OOP Modellierung ? compuboy1010 Apps und PHP Script Gesuche 2 17-07-2003 14:15

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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:57 Uhr.