Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209

    chiamare funzioni e metodi senza eval()

    E' possibile chiamare la funzione x(); dove il nome è contenuto in una variabile $y='x';
    senza usare eval('$j='.$y.'();');

    Vorrei sapere la stessa cosa per metodi di classi astratte senza sapere il nome della classe nè il nome del metodo, entrambi contenuti in variabili.
    senza usare eval('$j='.$nome_della_classe.'::'.$y.'();');

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Puoi tranquillamente usare la variabile direttamente come nome di funzione... il PHP lo permette
    Codice PHP:
    $j $y(); 

  3. #3
    // funzioni
    $j = call_user_func($y, 1, 2, 3); (oppure $y(1, 2, 3))

    // classi, metodi statici
    $result = call_user_func(array($nomeClass, $nomemetodo), 1, 2, 3);

    // metodi non statici
    $result = call_user_func(array(new $$nomeClass, $nomemetodo), 1, 2, 3);

    per le classi va bene anche

    $c = new $$nomeClasse;

    poi quando avrai finito di creare l'ennesima lib Ajax / PHP, pilotato da Ajax, ce la posti ?


    [edit]
    P.S. un appunto: se è tutto runtime, la differenza con eval è praticamente inesistente, sia per velocità che per "pericolosità" ... e sinceramente, a livello di scrittura, non so quale sia migliore tra

    if(class_exists($nomeClasse))
    eval('$result='.$nomeClasse.'::'.$nomeMetodo.'($a, $b,$c);');

    e
    if(class_exists($nomeClasse))
    $result=call_user_func(array($nomeClasse, $nomemetodo),$a,$b,$c);

    certo è che da un punto di vista puramente estetico, il secondo metodo è indubbiamente più elegante
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    Certo :ignore:

    comunque grazie, ci sono controindicazioni php4 su questi sistemi?

  5. #5
    Originariamente inviato da SPiNALeX
    Certo :ignore:

    comunque grazie, ci sono controindicazioni php4 su questi sistemi?
    ho editato proprio per approfondire il discorso, il succo è controlla sempre tutto "paranoicamente" quando adotti soluzioni di questo tipo, te lo dice uno che ne ha scritte almeno un paio di libs così (ACE ed il vecchio AJSHP)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    in realtà quello che ti ho chiesto è per un framework che si chiama "addmaker" che sto scrivendo prima per PHP4 ora solo per PHP5, a meno che non trovi qualcuno che lo continui in PHP4.
    Lo sto scrivendo per aiutarmi nei lavori incredibili che mi stanno capitando quindi è ipertestato, ma sto cercando di togliere tutti gli eval che ho messo per pressapochismo.

    E' basato sul pattern MVC e templating, utilizza dei metatemplate scritti in YAML, ho già scritto dei moduli per caricare widget, gestioni cookie e sicurezza.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    Praticamente ho scritto anche un programma che crea i siti basati su addmaker, collegandosi al sito online dove gli agenti creano i contratti.

    Mi basta configurare qualche cazzatina qua e là è il sito semplice è pronto, siti con fotogallery e-commerce e parti dinamiche standard.

    Adesso lo sto mettendo alla base di un applicativo a larga scala.

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.