ik heb een functie welke in een loop een bestand moet zoeken en dan includen in geval deze bestaat


if (file_exists(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'')) {
echo ''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'<br>';
include(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'');
}

1 van de linken naar een bestand is
beheer/cache/45/2020/3/users/3/dag_13_03_2020.php

hij doet de echo dus het bestand bestaat
maar de include werkt echter niet
doe ik deze zelfde code nou op de pagina waar ik de functie opvraag dan doet hij het wel
dus zonder functie wel en met gebruik van een functie niet.
mag je geen files includen in een functie?

of is er iets anders dat ik ben vergeten?
ja bij mij dus niet
de functie wordt ingeladen via functies.php op zelfde locatie
echter staat de index enz waarmee de gehele pagina word gelanden een stuk terug

moet je mischien bij functies de hele path compleet opgeven met root enzo ?
ik snap het dus niet

nu snap je waarom ik dus vast zit
dit is dus ook 1 van redenen waarom ik liever geen functies gebruik
omdat niemand dus oplossing weet voor dit soort dingen :(

ik probeer nog wel even te klooien en anders gaat functie gewoon weer in prullebak en ga ik weer terug naar hardcoded
heb niet de tijd om jaren te klooien en cursusen als zelfs jullie niet weten waarom dit gebeurt

..................

wat is er fout in

<?php
echo 'test of bestand werkt';
?>
Hier werkt het prima.
Let wel op dat de include in zijn script het pad gebruikt van directory waar je jouw parent-script in uitvoert. Dit kan je checken via de [php]getcwd[/php] functie.

PS: Als je zit te tobben met scripts, en het wil niet lukken. Neem een pauze en ga later weer verder met een fris en fruitig brein. Dat voorkomt tunnelvisie. Overal is wel een verklaring voor te vinden. Dit kan haast nooit een excuus zijn om weer terug te vallen in oude plakband-code.
ok ik heb een scripter gesproken die een goede test aan mij liet zien, wat eigelijk logies klinkt alleen heb ik geen oplossing

een functie heeft zijn eigen variablenen scope en dus kan je geen variabelen includen in een functie
of zoiets :S

ik heb namelijk even de link rechtstreeks in die functie gezet in de include met een echo erin

het bestand wordt dan wel geinclude ik krijg dan dus wel een echo
maar niet de variabelen

dus hoe kan ik globals ontvangen in een functie :P ?

Je bedoelt $_GET, $_POST, $_SERVER etc? Die zijn gewoon overal in PHP beschikbaar.
maar als je buiten je functie bijvoorbeeld $var gebruikt, dan kan je die niet direct gebruiken in je functie, tenzij:

- Je deze als parameter meegeeft in de functie aanroep
- Of je globaliseert deze met global $var in jouw functie. Maar dat geeft minder overzicht in mijn ogen, en zulke dingen moet je liever vermijden.
ok uhm update:

include functie werkt, maaar.....

in de functie zelf dacht ik laat ik deze eens een echo geven in de functie
dit werkt

buiten deze functie niet
hoe moet ik dit doen dat hij dus een standaard result terug geeft :P

ik ben hier dus echt een noob in dat blijkt maar weer :P
luistert ie eindelijk een keer naar een advies (functies gebruiken), gebruikt hij het verkeerd:

als je include uitvoert IN een functie in de include bevat $x = 10; dan zal IN de functie een var bestaan met de naam $x.

Daarbuiten niet.

En de caching bestanden bevatten kennelijk geen data, maar PHP scripts waarin vars voorzien worden van data;

En die wil hij net weer in de globale namespace hebben, net als alle vars.

ALS je dan al wilt cachen, cache dan de DATA. ofwel in een file, of liever in een tabel in de database. Die je dan 1 op 1 ergens inleest: overzichtelijker en ook niet gevoelig voor fouten.
En de data is ook elders herbruikbaar. Zonder dat je altijd dezelfde 30-karaketer variabelen nodig hebt.

Maar ja: liever chaos dan overzicht in deze applicatie.
Zal wel aan de brance liggen...
ik decht gewoon een beetje nieuw te doen door het geheel van het zoeken naar een cache en het aanmaken hiervan via een functie te doen

de map aanmaken deel werkt
cache aanmaken deel werkt ook via functie
het includen van de cache via de functies dus niet :P

dit moet echter wel


ALS je dan al wilt cachen, cache dan de DATA. ofwel in een file,

dit gebeurt dus, de data wordt in deze files gezet bij een variabelen :)


of liever in een tabel in de database. Die je dan 1 op 1 ergens inleest:

dit was vroeger via sql geregeld allemaal en dat kan nogsteeds echter scheeld het inladen via cache 99%
van 3 min+ naar 3 sec
ik heb dus liever de cache :)

-----------------------
maar bottomline jullie zeggen dus eigelijk dat het niet kan met een functie bestanden includen met vars
en dat ik dit dus hardcoded moet doen,

je lijkt er naar te streven om alles zo onhandig mogelijk aan elkaar te knopen.

laten we aannemen dat je berekeningen inderdaad door jou niet in sql uitgevoerd kunnen worden en caching van de berekening dus nodig is.

waarom sla je dan de berekende DATA niet op in een DATAbase?

als er een reden zou zijn om de data in een file op te slaan, zou ik dan denken aan een file met data.
CSV of Json bijvoorbeeld

maar kennelijk bouw je er een php script van dat vervolgens geinclude wordt.

nu kunnen we redenen aanvoeren waarom dat niet handig is
# je data files verbieden nu aanpassing van het hoofdscript want namen van vars liggen vast
# alles hangt per se aan de scope van van het script en binnen functies of classes loopt niets.

opgeslagen berekende DATA moet je binnen 0.01 sec kunnen selecten in een query.
je hoeft immers niet meer te rekenen.


[size=xsmall]Toevoeging op 23/03/2020 23:16:48:[/size]

maar bottomline jullie zeggen dus eigelijk dat het niet kan met een functie bestanden includen met vars
en dat ik dit dus hardcoded moet doen,

nee. dat zegt volgens mij niemand.
Wat een warrig topic.

Wat wil je nu precies bereiken in die functie? Wat moet er gebeuren?

Leg het eens uit in woorden, dus niet in code.

Reageren