php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2011, 16:03  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard Late Static Binding in PHP 5.2 immitieren

Ich verwende folgende Singleton-Klasse, die von anderen Klassen beerbt wird:
PHP-Code:
<?php

/**
 * Diese Klasse ist zur Weitervererbung konstruiert.
 * Klassen, die diese Klasse beerben, können nur über getInstance() instanziert werden.
 * Diese Funktion liefert eine Referenz auf das immergleiche Objekt.
 */
abstract class Singleton {

    
/**
     * Der Konstruktor darf nicht public sein, da damit auch ausserhalb der Klasse ein neues Objekt erzeugt werden könnte.
     * Er darf aber auch nicht private sein, da erbende Klassen über getInstance immernoch neue Objekte erstellen können müssen.
     * Damit die erben
     */
    
protected function __construct() {

    }

    
/**
     * Wenn noch keine Instanz existiert, wird eine neue erstellt.
     * Ansonsten wird eine Referenz auf das existierende Objekt zurückgegeben.
     *
     * @staticvar static $instance
     * @return static
     */
    
public final static function &getInstance() {
        static 
$instance;
        if(!
is_object($instance))
            
$instance = new static();
        return 
$instance;
    }

}

?>
Bisher hat Sie wunderbar funktioniert. Leider habe ich auf einem Server nur Php 5.2 zur verfügung, dieser beisst sich an der Zeile:
PHP-Code:
$instance = new static(); 
Ist es möglich, diese Funktionalität mit Php5.2 zu immitieren, ohne alle anderen Klassen umzuschreiben, oder werde ich in den sauren Apfel beissen müssen?
Buhmann ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.12.2011, 16:30  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Buhmann Beitrag anzeigen
Bisher hat Sie wunderbar funktioniert. Leider habe ich auf einem Server nur Php 5.2 zur verfügung, ...
Huch? PHP 5.4.0 steht schon in den Startlöchern...
Zitat:
Ist es möglich, diese Funktionalität mit Php5.2 zu immitieren, ohne alle anderen Klassen umzuschreiben, oder werde ich in den sauren Apfel beissen müssen?
Kommt darauf an, was schneller geht: alle Scripte zu editieren oder eine aktuelle PHP Version zu compilieren.

btw: wenn ein Werkzeug nicht geeignet, sollte man das Werkzeug wechseln.
  Mit Zitat antworten
Alt 27.12.2011, 18:13  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Buhmann Beitrag anzeigen
Ich verwende folgende Singleton-Klasse, die von anderen Klassen beerbt wird:
Wozu brauchst du so viele Singletons? Ich bin mir sicher, auf die meisten kannst du verzichten. Das eine oder andere, was du doch benötigst, musst du in PHP 5.2 (und kleiner) eben von Hand erzeugen, ohne von einer generischen Singleton-Klasse zu erben.

Zitat:
Bisher hat Sie wunderbar funktioniert. Leider habe ich auf einem Server nur Php 5.2 zur verfügung, dieser beisst sich an der Zeile:
PHP-Code:
$instance = new static(); 
Ist es möglich, diese Funktionalität mit Php5.2 zu immitieren, ...
Nein. Die aktuelle Klasse kann in PHP <= 5.2 nur von Objekten über get_class($this) geholt werden. In Klassen geht das, was static oder get_called_class() bieten, nur ansatzweise über gräßliche Workarounds.
fireweasel ist offline   Mit Zitat antworten
Alt 29.12.2011, 10:05  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Ich schließe mich Fireweasel an. In 5.2 sind alle Versuche LSB zu implementieren grausig oder nicht funktionsfähig.

@Meikel

Es gibt noch haufenweise produktive Server, die die Admins nicht auf 5.3 umstellen wollen. Ein Argument, das mir noch im Gedächtnis ist, war "Wir installieren nur, was im offiziellen CentOS Repo ist." (schon ne Weile her). Auch viele Shared-Hoster möchten nicht umstellen, aus Angst vor der Notice-Flut bei schlechten 5.2er Anwendungen. Da kann man den Kunden nur den Wechsel des Hosting-Providers empfehlen. Außer natürlich, das war die Inhouse-IT
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 29.12.2011, 10:26  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mquadrat Beitrag anzeigen
Es gibt noch haufenweise produktive Server, die die Admins nicht auf 5.3 umstellen wollen.
Bekannt. Einer der Gründe ist: da PEAR und Horde noch nicht PHP 5.3.3 kompatibel sind, funktioniert bei Plesk Webmail nicht mehr.

Zitat:
Auch viele Shared-Hoster möchten nicht umstellen, aus Angst vor der Notice-Flut bei schlechten 5.2er Anwendungen.
Es gibt reichlich finstere Scripte unter der PHP-Sonne. <ggg>

Deshalb wettere ich ja gerne gegen 'altes und unsauberes Zeuch' (zB. PHP4-"OOP"), weil absehbar ist, daß sich PHP ein paar Versionen später sowas nicht mehr gefallen läßt.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] static Fehler in OOP abdullah PHP-Fortgeschrittene 18 03.01.2010 21:05
[Erledigt] von static function auf andere zugreifen Felix PHP Tipps 2009 3 15.04.2009 11:55
static - Ja oder Nein? dennito PHP Tipps 2009 14 05.01.2009 21:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php klasse beerben, pear \5.4\, late binding php 5.2, php 5.4 late static, php public static 5.2, php klassen beerben

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum