Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Umfrage
Frage: Hilfreich?
Jo, hab was gelernt. - 1 (100%)
Nee, alles bla. - 0 (0%)
Stimmen insgesamt: 1

Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Know your PHP ,)  (Gelesen 388 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 553

One-Man Team


« am: Juni 04, 2010, 06:18:27 »

Ein kleiner Beitrag zum Thema "Know your PHP" and "Don't outsmart the PHP engine".

Folgende Ausgangsituation sei gegeben: eine URI/URL soll anhand ihrer Slashes in Segmente zerlegt werden. Dieses Problem tritt häufig beim URL-Routing/Mapping auf.

Code: (php)
       /**
         * remove multiple slashes
         */
        while($url = strpos($url, '//') !== false)
        {
            $url = str_replace('//', '/', $url);
        }

        /**
         * The slashes (/)
         */
        # Segmentize the url into an array
        $url_split = explode('/', $url);

        # get rid off the first element of the URI (that's the first slash)
        array_shift($url_split);

        # unset the request url string
        unset($url);

        /**
         * The empty segments
         */
        foreach($url_split as $key => $value)
        {
            if(e mpty($value))
            {
                unset($url_split[$key]);
            }
        }
        
        # reindex the array with array_values, because unset does not reindex
        $url_split = array_values($url_split);

Nach Refaktorisierung* sieht das so aus:

*Und? Wiedermal keine Ahnung was Refaktorisierung bedeutet?
Refaktorisierung (engl. refactoring) ist die Verbesserung der Codequalität ohne dabei die Funktionalität zu verändern.

Code: (php)
       $uri_split = preg_split('#/#', $uri, -1, PREG_SPLIT_NO_EMPTY);


PHP's PCRE Funktionen (kurz auch "preg" Funktionen)  gelten zwar allgemein als langsam.
Stellt man jedoch die Anzahl der Funktionsaufrufe an den PHP-Kern im ersten Codeabschitt
ins Verhältnis mit der längeren Laufzeit der Preg-Funktion, dann ergibt sich auch ohne genaues Benchmarking ein Zeitgewinn. Die Refaktorisierung erweist sich also als Vorteilhaft. Aber es gibt auch Nachteile: gegenüber einfacheren String- und Array Befehlen ist das Wissen über Regexp und PCRE oftmals nicht vorhanden. Daher würden viele schon gar nicht auf diesen Lösungsansatz kommen.

Regeln:
1. Don't outsmart the PHP engine.
2. Know your PHP.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Februar 03, 2012, 11:34:52