2009-07-23 8 views
2

Da ich neu in PHP bin und viel mit diesem "Funktions-Wrapper" gefahren bin, dachte ich, ich würde ein paar Meinungen und ein kleines Feedback bekommen. Ich würde gerne fünf Kommentare bekommen, wenn möglich.Sieht dieser einfache PHP-Wrapper für seinen Zweck sinnvoll aus?

Jetzt bevor Sie fragen, habe ich viele Gründe dafür, andere (WordPress) Funktionen zu verpacken, die primäre ist problemlos Upgrade. Es war mir auch wichtig, einen benutzerdefinierten Namen für jede Funktionsdefinition festlegen zu können, daher die $wrap array.

Aber ich schweife ab, sieht das akzeptabel und relativ kugelsicher aus?

function core_oo($function) 
{ 
    $args = array_slice(func_get_args(), 1); 
    $wrap = array 
    (
     'comment' => 'the_comment', 
     'comments' => 'have_comments', 
     'post' => 'the_post', 
     'posts' => 'have_posts' 
    ); 
    return call_user_func_array($wrap[ $function ], $args); 
} 

... und die Funktion wird wie ...

core_oo('post', 'arg1', 'arg2'); 

Vielen Dank aufgerufen werden!

EDIT:

Per sugeestion des Chaos unten, dann ist dies der richtige Weg zu wickeln zu erklären $ als statisch?

static $wrap = array 
(... 
+0

Re 'statisch $ wrap': Ja, das war's. – chaos

Antwort

6

Nun, Ihr grundlegendes Ziel scheint wie Wahnsinn, aber mit Ihrem grundlegenden Ziel als gegeben hingenommen, ja, die Funktion sieht aus wie eine feine Weise, um es zu erreichen.

Sie sollten $wrap als static deklarieren, um sicherzustellen, dass Sie das Array bei jedem Aufruf der Funktion nicht unnötig neu generieren.

Und:

if(!isset($wrap[$function])) 
    trigger_error('No underlying function known for ' . $function, E_USER_ERROR); 

würde wahrscheinlich zu klug sein.

+0

Danke Chaos! Ich habe von anderen gehört, die meinen, dass mein grundlegendes Ziel seltsam erscheint, aber niemals einen guten Grund. Mein (möglicherweise fehlerhafter) Gedanke war, dass während eines WordPress-Upgrades, wenn etwas in meinem Thema kaputt geht, ich einen einfachen Verweis habe, was ich prüfen muss, um es im Handumdrehen zu reparieren. Darüber hinaus wird durch das Umbrechen all dieser WP-Funktionen, wenn während eines Upgrades etwas kaputt geht, eine Zeile statt vieler geändert. Kennen Sie einen besseren Weg, dies zu erreichen? – Jeff

+0

Ehrlich gesagt, ich sehe nicht wirklich, wie dieser Wrapper irgendetwas von dem, was du beschreibst, einfacher macht, als nur die nativen WP-Aufrufe zu verwenden. Deshalb scheint es komisch. – chaos

+0

Ich benutze etwa 40 Standard-WordPress-Funktionen, die über meine Themen-Dateien verteilt sind. Ich dachte, indem ich sie einwickelte und sie von einem zentralen Ort aus benutzte, wenn eine Funktion obsolet oder kaputt wurde ... besser, eine Zeile in einer Datei zu ändern als viele Zeilen in vielen Dateien. – Jeff

Verwandte Themen