Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133

    classi variabili e __autoload()

    Salve a tutti =)

    mi trovo a fronteggiare un nuovo problema, nella mia "impresa" di apprendere come si deve il PHP ad oggetti.

    Nel mio codice ho definito la funzione __autoload() per includere automaticamente i sorgenti delle classi non ancora dichiarate.

    La mia implementazione è molto semplice:

    Codice PHP:
    function __autoload($class) {
      require_once 
    "$class.class.php";

    e questa funzione mi carica correttamente, ad esempio, il mio SessionHandler, il cui sorgente NON è esplicitamente incluso nel codice, ma pare fallire ad esempio quando provo a caricare la classe UsersDAO.

    Ho verificato il mio include path, e comprende anche le cartelle in cui si trovano i sorgenti per questa classe. Tra l'altro, pare che la funzione __autoload() non venga nemmeno richiamata! Infatti, nel codice della funzione ho inserito un var_dump() del nome della classe, e risulta essere chiamata solo per il SessionHandler e poi basta...

    Consigli? Volevo evitare la lunghissima sfilza di include, che non sempre sono tutti necessari...

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133
    Aggiornamento: ho provato a cambiare l'implementazione in questo modo

    Codice PHP:
    function autoload($class) {
      require_once 
    "$class.class.php";
    }
    spl_autoload_register("autoload"); 
    e ho ottenuto che mi carica UsersDAO e altre classi, in compenso non funziona più Smarty, non riesce a caricare i plugin interni mentre prima bastava il require della classe principale per risolvere tutto..

    Non capisco proprio, in un modo me ne carica alcune, nell'altro modo saltano altre classi...

    Idee?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    98
    quando tu istanzi una classe ciò che viene passato ad autoload, cioè il valore di $class, è il nome della classe, con le sue maiuscole e minuscole. Se sei su un sistema *nix devi essere sicuro che il file "$class.class.php" esista davvero, con le sue maiuscole e minuscole... credo che solo questo possa essere il problema. Se sei su windows non c'è problema... avendo un file system case insensitive Io spero però tu stia per il tuo bene su un altro OS

  4. #4
    se tu dichiari

    Codice PHP:

    class UsersDAO {


    Il file che __autoload andrà a cercare sarà UsersDAO.class.php per includerlo.
    Quindi la variabile $class contiene UsersDAO che è il nome della classe.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    98
    Originariamente inviato da sir daniel
    se tu dichiari

    Codice PHP:

    class UsersDAO {


    Il file che __autoload andrà a cercare sarà UsersDAO.class.php per includerlo.
    Quindi la variabile $class contiene UsersDAO che è il nome della classe.

    SI, PROPRIO COSI!

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.