Autor Zpráva
Doom
Profil *
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
Doom
ne/ne musis si napsat svoji viz readdir()
SwimX
Profil
    $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
lepsi je pouziti glob:
foreach(glob('dir/*') as $file) {
  include $file;
}
Doom
Profil *
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
Doom
Ne. Název adresáře se musí dát místo toho dir
bohyn
Profil
Doom
Mimochodem, to includujes tolik souboru ze je problem je vsechny vypsat, nebo jsou to nejake plug-iny?
Majkl578
Profil
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 *
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 *
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
Doom
$dir = 'vyroky/';
foreach(glob($dir . '*') as $file) {
if(!is_file($file)) continue;
  include $file;
}
Majkl578
Profil
ale neee, tu *si tam mel nechat.
Doom
Profil *
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
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
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
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 *
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
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
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
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
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
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
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
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
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
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).

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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