Addirittura potresti usare solo l'include_path e mettere un
@ davanti all'inclusione, se si verifica un errore lo intercetti, senza file_exists
Addirittura potresti usare solo l'include_path e mettere un
@ davanti all'inclusione, se si verifica un errore lo intercetti, senza file_exists
per favore NIENTE PVT TECNICI da sconosciuti
non voglio usare include_path, vogio essere libero di scegliere 1 file, piu' files predefiniti, tutti i files ...Originariamente inviato da Fabio Heller
Addirittura potresti usare solo l'include_path e mettere un
@ davanti all'inclusione, se si verifica un errore lo intercetti, senza file_exists
ora gli ho dato una ritoccatina, mi dici cosa ne pensi ?
[edit]
no, questa non va, impedisce di usare il solo nome della classe , obbliga invece a scrivere il file completo ... scomodo se non si usa l' asterisco ...
FIGATA!
stavo per fare una funzione che data una directory mi includeva tutti i file php, ma questo e' molto molto meglio
p.s.=mi sembra che non fai il controllo che i file siano solo .php![]()
Kaworu.it
Bookmarks on line i tuoi preferiti ovunque
il tempo è il miglior dottore.....solo che è parecchio lento...troppo lento
wxKonTEXT Editor di testi(linux, win e mac), new version
si, non avevo provato, l' avevo scritta al volo senza testarla, quella sopra invece funziona bene ma forse come dice Fabio e' un po' oneroso il listing della cartella ...Originariamente inviato da kaworuskench
p.s.=mi sembra che non fai il controllo che i file siano solo .php![]()
![]()
ok, per come e' pensata e strutturata penso sia inevitabile il listing della directory![]()
comunque questa e' la versione definitiva, un po' migliorata ma il listing rimane
codice:<?php //4 //5 /** * Functions "FROM path IMPORT data" * A list of functions to import from a folder one or more files. * Emulates python sintax with something like: * from('classes') . import('*'); * How to: * from( $files_folder ) . import( $array_string_or_all ); * @param String path where you want import* files * *import as require_once * @param Mixed single char '*' to import all files * class or file name 'Example' without extensions * array with a list of files without extensions * ----------------------------- * EXAMPLE: * require_once('from_import.php'); * from('classes') . import(Array('MyDBClass', 'MyOtherClass')); * ______________________________ * @author Andrea Giammarchi * @date 2005/06/01 15:40 * @site www.devpro.it * ______________________________ */ function from($folder){ $temp_folder = $folder; do { $last = substr($temp_folder, -1); $temp_folder = substr($temp_folder, 0, -1); $pos = isSet($pos) ? $pos++ : 0; } while(in_array($last, Array('\\\', '/'))); $folder = $pos === 0 ? $folder : substr($folder, 0, $pos); $GLOBALS['__FROM_IMPORT_FOLDER__'] = &$folder; } function import($what) { if( isset( $GLOBALS['__FROM_IMPORT_FOLDER__'] ) && is_dir( $GLOBALS['__FROM_IMPORT_FOLDER__'] ) ) if(@$handle = &opendir( $GLOBALS['__FROM_IMPORT_FOLDER__'] )) { while(($file = readdir($handle)) !== false) __fileImporter($file, $what); closedir($handle); } unset( $GLOBALS['__FROM_IMPORT_FOLDER__'] ); } function __fileImporter(&$file, &$what) { if( $file !== '.' && $file !== '..' && isset( $GLOBALS['__FROM_IMPORT_FOLDER__'] ) && !is_dir( $GLOBALS['__FROM_IMPORT_FOLDER__'] .'/'. $file ) && is_file( $GLOBALS['__FROM_IMPORT_FOLDER__'] .'/'. $file ) ) { $required = false; $temp_file = array_shift(explode('.', $file)); if(!class_exists($temp_file)) { if($what === '*') $required = true; elseif(!is_array($what) && $temp_file === $what) $required = true; elseif(is_array($what) && in_array($temp_file, $what)) $required = true; } if($required === true) @require_once( $GLOBALS['__FROM_IMPORT_FOLDER__'] .'/'. $file ); } } ?>
ok, file addato in devpro , se pensate sia utile, scaricatelo pure![]()
http://www.devpro.it/php4_id_87.html
P.S. sinceramente tra include_path e un loop in directory non so di fatto quanto cambi, in fondo php usa funzioni di sistema per scorrere la dir, non penso che Apache faccia qualcosa di diverso , ma non ne sono certo![]()
antré ma perché non usi glob?
glob('percorso/*.php');
ti restituisce un array ... in questo modo fai quello che devi fare sull'array (ovvero un in_array o un bell import all)
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
riguardo questa avevo risposto male, nel senso che la prima modifica proprio non includeva i files se non con l' asterisco ... il discorso e' quello del package, inteso come una directory diclassi o funzioni comuni, portabili, da includere o richiedere nei vari applicativi ... io comincio ad averne minimo 10 (piu' eventuali dedicate), quindi una cartella classes fa al caso mio ma do per scontato che la cartella in questione contenga solo files di tipo .phpOriginariamente inviato da kaworuskench
p.s.=mi sembra che non fai il controllo che i file siano solo .php![]()
se hai immagini, testi, quant' altro non vedo perche' dovresti metterli nella cartella dei packages, insomma perderebbe un po' di utilita' o senso il discorso package .... o no ?
volendo si aggiunge facilmente anche quel controllo ( rallentando un po' ... ) ma imho non e' questo che intendevo per package![]()
globOriginariamente inviato da daniele_dll
antré ma perché non usi glob?
glob('percorso/*.php');
PHP 4 >= 4.3.0, PHP 5
l' ho scritta per una cosa che devo fare ora su un vecchio PHP
potrebbe essere interesante, solo che come ho detto non penso che glob o include_path faccia qualcosa di diverso a livello di chiamate al sistema rispetto a un readdir ... in piu' c'e' da dire che glob prende anche le info sul size di ogni file, quindi probabilmene e' anche piu' lento di readdir o include_path ... per non considerare chi ha l' abitudine di scrivere files php4 come .php4 , php5 come .php5 o che magari ha modificato le estensioni ed ha detto al server di farle interpretare come .php ... boh, lo trovo comodo ma forse piu' lento e sicuramente meno portabile ... tu che dici ? :master:
si ma è + facile da gestire ... devi scrivere infatti meno codice ^^
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand