Autor Zpráva
mira007
Profil
Zdravim, zkusim, jestli mi tady nekdo nepomuze. Potreboval bych ve scriptu z urcityho duvodu includnout pomerne velky mnozstvi souboru (desitky az stovky) z nekolika ruznych slozek. Jde to include nejak ulehcit a includnou nejakym zpusobem treba celou slozku se vsema souborama zaroven? Verim, ze nejakej zpusob existuje, vypisovat vsechno po jednom souboru by bylo hrozne nadlouho. Diky.
Majkl578
Profil
Šlo by to tak, že zadáš složku a ta se automaticky projde, vyhledá php scripty a ty vloží:
includeDir('/www');

function includeDir($dir)
{
	if (!is_dir($dir)) {
		throw new Exception("'$dir' is not a directory");
	}
	foreach (glob($dir . '/*.php') as $file) {
		include $file;
	}
}
Alphard
Profil
mira007:
includnout pomerne velky mnozstvi souboru (desitky az stovky) z nekolika ruznych slozek
Je to rozumné? Aby to nepoložilo aplikaci. Jestli vážně vše potřebujete, bude asi rychlejší ze všech souborů vygenerovat jeden, a ten cachovat a includovat.
mckay
Profil
mira007:
Kdysi jsem na to napsal jednu třídu a rád se pochlubím, kdyby náhodou byl důvod nepoužít tu původní.
<?php
class super_include{
        function scan($input){
          @$dir = scandir($input);
            foreach($dir as $file){
                if($file == "." or $file == "..")continue;
                include("$input/$file");         
            }            
        }
}
$object = new super_include();
$object->scan("super-include-dir"); //složka ze které se má nahrávat.
?>

Nevím jak moc prasně je to napsané, ale funguje to.
Majkl578
Profil
mckay:
Nevím jak moc prasně je to napsané
Jaký smysl má to použití objektu? Nějak žádný nevidím.
mckay
Profil
Majkl578:
Bylo to špatně začleněné, když jsem začínal, rval jsem toho do té třídy víc.
AM_
Profil
No, pokud se to vyndá z té třídy, je to pěkná funkce :) ještě bych smazal ten zavináč.
Jinak připojuji se k Alphardovi, bezhlavě includovat mraky souborů je špatný nápad.
mira007
Profil
Diky vsem za reakce, nejak to vyzkousim.
Tech souboru je nakonec "jen" nekolik desitek (stovky ne). Chci to z tohoto duvodu: mam za ukol zjistit, zda je urcita rozsahlejsi aplikace napsana v nejake starsi verzi php kompatibilni s PHP 5.3. Nevim, jestli je muj pristup spravny - mym napadem je vsechno v 1 testovacim scriptu includnout a pak sledovat pripadne chybove hlasky. Nic jinyho me nenapadlo, moc zbehlej v php zatim nejsem.
AM_
Profil
mira007:
Tak to je docela chytrý nápad :) samozřejmě není to stoprocentně spolehlivé, hlášky mohou být potlačené zavináčem a ačkoli to není moc časté ani pravděpodobné, nekompatibilita se může projevit i jinak, než chybou.
Hlavně problém je, že spousta PHP "programátorů" prasí kódy tak, že minimálně na úrovni E_NOTICE vyhodí spoustu chyb (nedefinované proměnné atd...), ikdyž je "vše v pořádku".

//edit: nicméně teď mi došlo, že includovat všechny soubory najednou není správné řešení. Ta aplikace, když se standardně spustí, taky určitě neincluduje všechno najednou. A spouští se s různými vstupy, chyby mohou nastat jen s některými vstupy. Takže toto řešení asi nebude moc použitelné.
Majkl578
Profil
Co si spustit aplikaci pod 5.3 a vlastním error handlerem zachytávat E_DEPRECATED / E_*ERROR?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: