Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Inclusione file

  1. #1
    Utente di HTML.it L'avatar di Gioa32
    Registrato dal
    Jan 2000
    Messaggi
    68

    Inclusione file

    Ciao, mi sto perdendo in questa stupida cosa. Semplificando ho un filesystem così:

    index.php
    dir INCLUSI
    --conf.inc.php
    dir CLASSI
    --database.php
    dir PAGINE
    --cane.php
    --micio.php
    --dir AMM
    ----crea.php
    ----ecc.php

    In database.php ho la classe che gestisce connessione e altro. conf.inc.php è il classico file di configurazione che tra l altro contiene i dati per la connessione. Visto che devo includere database.php, in diversi file ad "altezze" diverse (cane.php, crea.php), devo fare in modo che db_config.php venga a sua volta incluso in database.php, attraverso il percorso assoluto.
    Ho provato a usare __DIR__ ma senza risultati in quando mi porta nella dir classi.

    Chiedo aiuto, link, spunti ecc. Ciao

  2. #2
    Ti conviene includere i file utilizzando il percorso assoluto. Se inizi il path utilizzando / ti riferisci alla root per cui per includere ad esempio "conf.inc.php" scriverai "/INCLUSI/conf.inc.php" ecc.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Gioa32
    Registrato dal
    Jan 2000
    Messaggi
    68
    Originariamente inviato da satifal
    Ti conviene includere i file utilizzando il percorso assoluto. Se inizi il path utilizzando / ti riferisci alla root per cui per includere ad esempio "conf.inc.php" scriverai "/INCLUSI/conf.inc.php" ecc.
    Ciao satifal, se includo così:

    Codice PHP:
    require_once('/inclusi/config.inc.php'); 
    il risultato è:
    Codice PHP:
    Warning: require_once(/inclusi/config.inc.php): failed to open streamNo such file or directory in /var/www/WG/classi/Database.php on line 3 Fatal error: require_once(): Failed opening required '/inclusi/config.inc.php' (include_path='.:/usr/share/php:/usr/share/pear'in /var/www/WG/classi/Database.php on line 3 
    mentre ho scoperto che così funziona:
    Codice PHP:
    require_once(__DIR__.'/../inclusi/config.inc.php'); 
    non avevo neanche provato perchè avevo battezzato strano mettere ../ dopo __DIR__

    Comunque grazie!

  4. #4
    Se esegui direttamente database.php allora dovresti mettere ../
    Avevo dato per scontato che lanciassi index.php nella root.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    L'inclusione dei file in php è preistoria. No, veramente: non lo fare. Non si fa più. Se trovi qualcuno che ti parla di inclusione di file in php, fuggi via. Se trovi una guida su php che ti parla di include, è obsoleta.
    Oggi si fa così: metti ogni classe in un file separato e usi spl_autoload_register() http://php.net/manual/it/function.sp...d-register.php
    Al limite puoi avere qualche require_once nel tuo front controller.

  6. #6
    Utente di HTML.it L'avatar di Gioa32
    Registrato dal
    Jan 2000
    Messaggi
    68
    Originariamente inviato da garakkio
    L'inclusione dei file in php è preistoria.
    Ciao, ho letto qualcosa inerente spl_autoload_register() e ho trovato qualche esempio interessante su stackoverflow.com. Ho buttato giù a grandi linee questa classe e funziona!!
    Codice PHP:
    class Loader
    {
      public static function 
    auto_carica$classe )
      {
        
    $file_da_includere __DIR__ "/inclusi/{$classe}.php";
        
        if( 
    file_exists$file_da_includere ) )
        {
          include 
    $file_da_includere;
        }
      } 
    }
    spl_autoload_register('Loader::auto_carica');

    $prova = new config();
    echo 
    $prova->user_db
    Ora mi rimane di aggiustarla un pò, completarla per includere altre cartelle e rifare il file di configurazione perchè non era una classe. Devo inoltre ben capire come usarla al meglio ma penso di essere sulla buona strada.
    Ciao e 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.