Autor | Zpráva | ||
---|---|---|---|
Doom Profil * |
#1 · Zasláno: 14. 1. 2009, 13:30:34
Dobrý den, mám dotaz může include načíst celou složku? Jestli že ne existujev php funkce která to dokáže? Dík za odpovědi
|
||
bohyn Profil |
#2 · Zasláno: 14. 1. 2009, 13:36:51
Doom
ne/ne musis si napsat svoji viz readdir() |
||
SwimX Profil |
#3 · Zasláno: 14. 1. 2009, 13:37:41 · Upravil/a: SwimX
$i = 0; $d = dir("foto_nahledy"); while (false !== ($nazev = $d->read())){ if ($i>1) include $nazev; // protože první dvě položky v adresáři jsou ., .. $i++; } $d->close(); |
||
Majkl578 Profil |
#4 · Zasláno: 14. 1. 2009, 13:39:00 · Upravil/a: Majkl578
lepsi je pouziti glob:
foreach(glob('dir/*') as $file) { include $file; } |
||
Doom Profil * |
#5 · Zasláno: 14. 1. 2009, 13:46:48
Dík za odpovědi.
Majkl578 Takže ted´ stačí dát $file nazev složky a dat celý kód do stránek a pude to? |
||
Joker Profil |
#6 · Zasláno: 14. 1. 2009, 13:49:09
Doom
Ne. Název adresáře se musí dát místo toho dir |
||
bohyn Profil |
#7 · Zasláno: 14. 1. 2009, 13:54:01
Doom
Mimochodem, to includujes tolik souboru ze je problem je vsechny vypsat, nebo jsou to nejake plug-iny? |
||
Majkl578 Profil |
#8 · Zasláno: 14. 1. 2009, 13:54:27 · Upravil/a: Majkl578
upravene, staci dat do cestu k adresari do $dir:
$dir = 'dir/subdir/'; //format slozka/podslozka/ foreach(glob($dir . '*') as $file) { if(!is_file($file)) continue; include $file; } |
||
Doom Profil * |
#9 · Zasláno: 14. 1. 2009, 14:09:49
tak sme to upravil na
<?php $dir = 'vyroky'; //format slozka/podslozka/ foreach(glob($dir . '*') as $file) { if(!is_file($file)) continue; include $file; } ?> a potom <?php $dir = 'vyroky'; //format slozka/podslozka/ foreach(glob($dir . 'vyroky') as $file) { if(!is_file($file)) continue; include $file; } ?> sem * nahradil nazvem výroky ale píše to Warning: Invalid argument supplied for foreach() on line 11 |
||
Doom Profil * |
#10 · Zasláno: 14. 1. 2009, 14:12:05
Jestli to pomůže tak ve scriptu který mi ukláda soubory do složky z které pak uncluduju mám:
<?php $nadpis = $_POST['nadpis']; $vyrok = $_POST['vyrok']; $soubor = fopen("vyroky/$nadpis.php","a+"); fwrite($soubor, $vyrok); fclose($soubor); ?> |
||
SwimX Profil |
#11 · Zasláno: 14. 1. 2009, 14:22:45 · Upravil/a: SwimX
Doom
$dir = 'vyroky/'; foreach(glob($dir . '*') as $file) { if(!is_file($file)) continue; include $file; } |
||
Majkl578 Profil |
#12 · Zasláno: 14. 1. 2009, 14:22:53
ale neee, tu *si tam mel nechat.
|
||
Doom Profil * |
#13 · Zasláno: 14. 1. 2009, 16:13:26
Já ji tam nechal jen jsem zkoušel jestli to pude když ji zmenim vyhazuje mi to
Warning: glob copy eval() has been disabled for security reasons in /3w/xf.cz/t/trohl/vyroky.php on line 11 Warning: Invalid argument supplied for foreach() in /3w/xf.cz/t/trohl/vyroky.php on line 11 tekže chyba musí bejt tad yna tom řádku: foreach(glob($dir . '*') as $file) { |
||
Tomasds Profil |
#14 · Zasláno: 14. 1. 2009, 16:20:48
Doom
Ne že by mně po tom něco bylo, ale můžeš naznačit, co je zhruba v těch includovaných souborech? Nějak si nedokážu představit rozumnou aplikaci, kde by to mělo smysl. Ale možná se pletu. |
||
Měsíček Profil |
#15 · Zasláno: 14. 1. 2009, 16:26:11
Reaguji na Tomasds:
"Ne že by mně po tom něco bylo, ale můžeš naznačit, co je zhruba v těch includovaných souborech? Nějak si nedokážu představit rozumnou aplikaci, kde by to mělo smysl. Ale možná se pletu." Pleteš. Co třeba pluginy do nějáké aplikace? (Obecné využití, zde to asi nebude přesně ono.) |
||
Aesir Profil |
#16 · Zasláno: 14. 1. 2009, 19:52:41
Měsíček:
„Pleteš. Co třeba pluginy do nějáké aplikace? (Obecné využití, zde to asi nebude přesně ono.)“ Neplete :) Tohle je cesta do pekel. Načítat se má, až když to potřebuji. Přece nebudete v aplikaci načítat 30 pluginů, když využijete jeden. |
||
Doom Profil * |
#17 · Zasláno: 14. 1. 2009, 21:14:37
No mám třídní stránky a tohle má sloužit pro vypsání výroku. Někdo napíše nový výrok ten se uloží do složky vyroky a ta se cela načte.
|
||
Tomasds Profil |
#18 · Zasláno: 14. 1. 2009, 21:40:48
Doom
Zkuste to bez souborů, milý Marconi. Jestli na to vyloženě nespěcháš, doporučoval bych to udělat jako svou první databázovou aplikaci. Jak na to, se dá přečíst tady: http://www.linuxsoft.cz/article.php?id_article=328 Kromě toho by to šlo udělat jako zápis a čtení řádků v jednom souboru, dělat to v několika, je .. nehezké. Měsíček zde to asi nebude přesně ono Nebude. |
||
Měsíček Profil |
#19 · Zasláno: 14. 1. 2009, 21:59:17
Reaguji na Aesira:
"Neplete :)" Plete :) "Tohle je cesta do pekel." .. a vstupenka zpět na svět. "Přece nebudete v aplikaci načítat 30 pluginů, když využijete jeden." Zde určitě ne. Jestli jsem to správně pochopil Tomasds se ptal k čemu je tento skript obecně. Docela živě si dokáži představit plnohodnotnou aplikaci, která velice podobným mechanizmem načítá své pluginy. Zato má představivost končí tam, když se snažím o elegantní představu kdy programátor cpe do stránky {*} jeden vytvořený plugin za druhým ručně. Reaguji na Tomasds: "Nebude." Což nevadí. |
||
Aesir Profil |
#20 · Zasláno: 14. 1. 2009, 22:12:52
Měsíček:
„Docela živě si dokáži představit plnohodnotnou aplikaci, která velice podobným mechanizmem načítá své pluginy.“ Ale takhle je to přece špatně. Není lepší mít povolené "pluginy" definované v konfiguraci vzhledem ke kontextu dané aplikace/domény (kterou už mám stejně načtenou v paměti) a načítat jen ty, které potřebuji, podle jasně definované konvence (např. jmenný prostor). Iterace na obsahem adresáře je oproti tomu náročná (jako všechny diskové operace) a tahle navíc poměrně bezhlavá :) |
||
Tomasds Profil |
#21 · Zasláno: 14. 1. 2009, 22:23:14 · Upravil/a: Tomasds
Měsíček
Docela živě si dokáži představit plnohodnotnou aplikaci, která velice podobným mechanizmem načítá své pluginy. Já ne. Resp. ne ve slušně udělané aplikaci. Jde o zbytečné diskové operace při každém zobrazení stránky. Kromě toho moje úvaha směřovala k tomu, aby Doom naznačil na co to potřebuje. Že v jeho případě je to špatná cesta (a všechno ostatní je tady OT), je asi jasné. edit: ano, bezhlavá, to je to, co jsem nevěděl jak napsat :) |
||
Měsíček Profil |
#22 · Zasláno: 14. 1. 2009, 22:28:13
Reaguji na Aesira:
"Ale takhle je to přece špatně." Pořád jsi mě nepřesvědčil :) "ení lepší mít povolené "pluginy" definované v konfiguraci vzhledem ke kontextu dané aplikace/domény (kterou už mám stejně n ačtenou v paměti) a načítat jen ty, které potřebuji, podle jasně definované konvence (např. jmenný prostor)." 1.) To jestli některé pluginy povolím či ne nemá s výše uvedeným mechanizmem nic společného. Můžu přece libovolně spustit cyklus a pak pomocí (administrace) -> podmínek filtrovat, které pluginy si přeji a nebo nepřeji. Ale postupovat způsobem "Vytvořil jsem nový plugin uprav si prosím svou stránku a vlož si tam tento kód." mi nepříjde zrovna elegantní. 2.) Co s tím mají společného jmenné prostory? "Iterace na obsahem adresáře je oproti tomu náročná (jako všechny diskové operace) a tahle navíc poměrně bezhlavá :)" Ano to už iterace obvykle bývají :) .. |
||
Aesir Profil |
#23 · Zasláno: 14. 1. 2009, 22:37:50
Měsíček:
„Pořád jsi mě nepřesvědčil :) “ Až vám přestane stíhat filesystém na serveru a naopak admini začnou nadávat, vzpomeňte si ;) „ To jestli některé pluginy povolím či ne nemá s výše uvedeným mechanizmem nic společného. Můžu přece libovolně spustit cyklus a pak pomocí (administrace) -> podmínek filtrovat, které pluginy si přeji a nebo nepřeji.“ Znamená to tedy, že s každým requestem budete načítat veškeré pluginy, i když je nakonec nepoužijete? „Ale postupovat způsobem "Vytvořil jsem nový plugin uprav si prosím svou stránku a vlož si tam tento kód." mi nepříjde zrovna elegantní. “ Souhlasím, kdyby tu někdo takový způsob navrhoval, také bych proti němu byl. „Co s tím mají společného jmenné prostory? “ Čemu konkrétně nerozumíte? |
||
Měsíček Profil |
#24 · Zasláno: 14. 1. 2009, 22:45:10 · Upravil/a: Měsíček
Tak začínám mít dojem, že buď jsem já pochopil špatně Vás a nebo vy mě. Nevadí.
"Znamená to tedy, že s každým requestem budete načítat veškeré pluginy, i když je nakonec nepoužijete? " Nikoli. Pomocí administrace a v kódu pomocí filtrů mohu určit, které chci -> vytvořit například nějáký speciální soubor, kde bude památka o mém rozhodnutí a pak v dalších částech aplikace se řídit tímto souborem tak dlouho dokud zase nebudu šmátrat v administraci. "Souhlasím, kdyby tu někdo takový způsob navrhoval, také bych proti němu byl." Tak to jsme dva. Ovšem nechápu proč se nechápem :) "Čemu konkrétně nerozumíte?" Jmenné prostory znám, ovšem nechápu co mají společného s tímto problémem a zrovna v "PHP". |
||
Aesir Profil |
#25 · Zasláno: 14. 1. 2009, 23:00:33
Měsíček:
„Tak začínám mít dojem, že buď jsem já pochopil špatně Vás a nebo vy mě. Nevadí. “ Váš návrh chápu cca takto (s použitím výše uvedeného kódu): foreach(glob('dir/*') as $file) { if (je_tohle_povoleny_plugin($file)) { include $file; } } Já navrhuji cca toto: foreach (povolene_pluginy_z_konfigurace as $plugin) { NameSpace_$plugin::staticka_metoda_s_inicializaci_pluginu /* pouze nutna konfigurace, skutecne nacteni provede az autoload pri skutecne potrebe nacteni */ } Berte to jako pseudokód, snad už mě chápete, jde mi o minimalizaci nutných operací. Když si zázazník objedná nový plugin, support udělá klik v administraci a povolí v kontextu aplikace konkrétního klienta objednaný plugin. Nic se nikam nekopíruje, knihovna je jen jedna pro všechny aplikace na daném serveru. |
||
imploder Profil |
#26 · Zasláno: 17. 1. 2009, 08:57:47
„Berte to jako pseudokód, snad už mě chápete, jde mi o minimalizaci nutných operací. Když si zázazník objedná nový plugin, support udělá klik v administraci a povolí v kontextu aplikace konkrétního klienta objednaný plugin. Nic se nikam nekopíruje, knihovna je jen jedna pro všechny aplikace na daném serveru.“
Předpokládám, že tím klikem se někam to nastavení i uloží. Tak proč nenačíst vybrané soubory podle těch nastavení, tak, jak by to každý normální program udělal? „Iterace na obsahem adresáře je oproti tomu náročná (jako všechny diskové operace) a tahle navíc poměrně bezhlavá :)“ Je konkrétně listování adresářem vážně tak tragické? Přístup k samotným souborům je rychlý (samozřejmě tak rychlý jako disk, ale to už je tak). |
||
Časová prodleva: 15 let
|
0