function include_directory

Door Marc Cools, 13 jaar geleden, 2.123x bekeken

Met deze functie kan je een volledige directory includen.
Dank aan iltar van der berg voor de code. Ik heb ze enkel een beetje aangepast en in een functie gegoten.

Je kan ook de functies include_once_directory, require_directory en require_once_directory maken met een kleine aanpassing.

Het leek mij leuk om in je persoonlijke bibliotheek onder te brengen.

Alle commentaar is welkom.

Gesponsorde koppelingen

PHP script bestanden

  1. function-includedirectory

 

Er zijn 11 reacties op 'Function includedirectory'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Midas
Midas
13 jaar geleden
 
0 +1 -0 -1
Misschien had je dit beter in 'snippets' kunnen plaatsen. Verder leuk stukje.
Marc Cools
Marc Cools
13 jaar geleden
 
0 +1 -0 -1
@Midas
Staat vanaf nu bij snippits.
Robert Deiman
Robert Deiman
13 jaar geleden
 
0 +1 -0 -1
Op zich grappig, maar vaak als je een aantal "classes" schrijft die samen voor 1 functie zijn (modules bijvoorbeeld) waarmee je je complete systeem kan uitbreiden, bestaat dit uit meerdere bestanden. Wanneer je de functie zo maakt dat die in verschillende mappen binnen je hoofdmap (bijv. "modules") elke keer de "index.php" of "mapnaam.php" of "modulenaam.php" pakt lijkt mij dat logischer.
Roel -
Roel -
13 jaar geleden
 
0 +1 -0 -1
Ziet er wel leuk uit, ik vraag me alleen af wanneer je een map wilt includen ;)
Nicoow Unknown
Nicoow Unknown
13 jaar geleden
 
0 +1 -0 -1
als je een map hebt genaamd includes misschien?
Onbekend Onbekend
Onbekend Onbekend
13 jaar geleden
 
0 +1 -0 -1
Toch leuk gedaan.

Ik zou wel altijd gaan voor include_once()..
Roel -
Roel -
13 jaar geleden
 
0 +1 -0 -1
@Tommy; waarom include_once()? Ik gebruik altijd include().
Marc Cools
Marc Cools
13 jaar geleden
 
0 +1 -0 -1
1/
Wanneer kan je deze functie include_directory gebruiken? Om bijvoorbeeld een initialisatie te doen. In plaats van één groot bestand met daarin allerhande initialisaties te zetten, kan je voor elk onderdeel een apart bestandje maken die je in een initialisatie map zet. Dat is overzichtelijk en uitbreidbaar. Om te vermijden dat je her en der de code moet aanpassen kan je de directory includen met deze functie.

2/
gelijkaardig kan je ook parse_ini_directory maken. Dan kan je al je ini files in een map zetten en ze worden allemaal geladen in een array. Deze functie zou complexer zijn. Wat doe je met gelijknamige variabelen? Zet je een extra dimensie voor de ini filename? In welke volgorde verwerk je de ini files? (ivm overschrijven) Dat zou dan eerst moeten beredeneerd worden wat het meest logische is.

3/
Mijn functie heeft een $exclude array. Hij gebruikt die voor files. Hij zou die ook kunnen gebruiken voor directories. Lijkt mij logischer. Dus nieuwe code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function include_directory($directory, array $exclude = array(), $subdirs=FALSE)
{

    $dir = new DirectoryIterator($directory);
    foreach( $dir as $child )
    {

        if( ! in_array($child, $exclude) )
        {

             if( $child->isFile() )
            {

                include($child->getPathname());
            }

            elseif( $subdirs )
            {

                include_directory($child, $exclude, $subdirs);
            }
        }
    }

    $dir=NULL;        
}

?>


4/
@Tommy
include_once_directory zou ook mijn voorkeur zijn.

@toby
__autoload werkt enkel voor classes en dan nog onder bepaalde omstandigheden.
Iltar van der berg
iltar van der berg
13 jaar geleden
 
0 +1 -0 -1
Het is van "der" Berg ;)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marc Cools
Marc Cools
13 jaar geleden
 
0 +1 -0 -1
@iltar van der berg
And der it is ;)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. function-includedirectory

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.