Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Cerebro
    Registrato dal
    Jan 2005
    Messaggi
    193

    eval per wrappare o rinominare una funzione

    Nel mio cms faccio uso della libreria mbstring per gestire stringhe multibyte nel caso del set di caratteri UTF-8.

    In pratica invece di usare substr() ad esempio, c'è mb_substr(), invece di strpos() mb_strpos() e così via.

    Può capitare (per ora non mi è capitato, ma non si sa mai) che la libreria "mbstring" non sia stata attivata e quindi necessito che, con tutti i pericoli che ne possono derivare ma magari non è il caso se non si usa utf-8, tutte le chiamate a mb_strpos() siano redirezionate alla strpos() liscia, e così via per tutte le funzioni mb_xxx che uso.

    E faccio così:

    Codice PHP:
    if(!function_exists('mb_internal_encoding'))
    {
        eval(
    'function mb_strlen($a) {return strlen($a);}');
        
    // ...
        // ...
        // ...

    Il caso di strlen() è il più fortunato perchè accetta un numero fisso di argomenti, ma ci sono altre funzioni che ne accettano 1 o 2 opzionali, ed in quel caso il PHP mi spara un Warning.

    Come gestire il caso di numero di argomenti variabili? Possibilmente in un'unica riga senza invocare func_get_args() et company, anche se non vedo come?

  2. #2
    Utente di HTML.it L'avatar di Cerebro
    Registrato dal
    Jan 2005
    Messaggi
    193
    Il solo scrivere i post mi fa venire idee... posso dare gli argomenti default tipo:

    Codice PHP:
    eval('if(!function_exists(\'mb_strpos\')){function mb_strpos($a,$b,$c=0) {return strpos($a,$b,$c);}}'); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.