Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema namespace a autoload

    ciao!

    ho un file che, tra le altre cose, ha il classico autoload:

    function __autoload($class) {
    include_once $class . '.php';
    }

    tutto funziona bene.
    al mio progetto, però, sto aggiungendo una libreria che usa in namespace.
    ho messo il file allo stesso livello delle altre classi, e poi nella pagina, dove già richiamo anche altri oggetti, ho messo questo:

    include_once '../lib/costanti_file.php'; // CONTIENE AUTOLOAD
    use Valitron\Validator as Validator;
    Validator::langDir('./Valitron/lang');
    Validator::lang('it');

    ma la pagina non funziona più.
    dove sto sbagliando??

  2. #2
    Quando usi i namespace, il nome della classe passato all'autoload e' il FQCN (fully qualified class name) che comprende - appunto - il namespace e non solo il nome della classe, quindi ne devi tenere conto nell'autoload.

    Ipotizzando la classica struttura in cui le directory rispecchiano i namespace (e cioe' la tua classe validator si trova in Valitron/Validator.php) puoi adattare l'autoload con qualcosa del genere:

    Codice PHP:
    function __autoload($class) {
        
    $file str_replace('\\'DIRECTORY_SEPARATOR$class) . '.php';
        require 
    $file;


  3. #3
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Quando usi i namespace, il nome della classe passato all'autoload e' il FQCN (fully qualified class name) che comprende - appunto - il namespace e non solo il nome della classe, quindi ne devi tenere conto nell'autoload.

    Ipotizzando la classica struttura in cui le directory rispecchiano i namespace (e cioe' la tua classe validator si trova in Valitron/Validator.php) puoi adattare l'autoload con qualcosa del genere:

    Codice PHP:
    function __autoload($class) {
        
    $file str_replace('\\'DIRECTORY_SEPARATOR$class) . '.php';
        require 
    $file;

    perfetto ho capito.
    grazie!!

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.