classes automatisch laden wanneer nodig dus geen AutoLoader of toch wel?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Reshad F

Reshad F

28/06/2012 16:37:22
Quote Anchor link
ja ik snap zelf hier dus niets meer van. ik heb dus een beetje uitleg voor mezelf erbij gezet en ik kom er nog steeds niet uit waarom hij verwacht dat classname hetzelfde heet als het bestandje

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
22
23
24
<?php
function __autoload($className) {
        // haal de base dir op.
        $base = dirname(__FILE__);
        
        // het pad ophalen
        $path = $className;

        // alle paden samenvoegen tot waar ik zijn moet en de phpfile eraan plakken.
        $file = $base . "/" . "/lib/" . $path . '.php';      
        
        // als file bestaat haal op anders error
        if (file_exists($file)) {
            require $file;      
        }

        else {
            error_log('Class "' . $className . '" could not be autoloaded');
            throw new Exception('Class "' . $className . '" could not be autoloaded from: '.$file);
        }
    }



       $car = new loginform();
?>


en ik heb voor de include van de loader een echo $file gedaan en ik krijg het juiste pad dus tot daar is het goed. het probleem ligt hem hier

$car = new loginform();

alleen weet ik niet wat.
 
PHP hulp

PHP hulp

11/01/2025 00:53:04
 
Wouter J

Wouter J

28/06/2012 16:38:26
Quote Anchor link
Quote:
het probleem ligt hem hier
$car = new loginform();

Kun jij me uitleggen waarom je denkt dat het probleem daar ligt?

Edit:
$base . "/" . "/lib/"
Slashje teveel?
Gewijzigd op 28/06/2012 16:39:12 door Wouter J
 
Reshad F

Reshad F

28/06/2012 16:51:56
Quote Anchor link
ah goed gezien wouter.(tikfoutje) alleen lost dat het probleem niet op. want ik krijg nog altijd dezelfde error

hij probeert namelijk nog steeds de class te vinden die dezelfde benaming heeft als

$car = new loginform();

want als ik in dat bestandje de klas naar loginform noem doet hij het wel.

denk ik nu verkeerd of hoort het ook gewoon zo.
Gewijzigd op 28/06/2012 16:52:52 door Reshad F
 
Erwin H

Erwin H

28/06/2012 16:54:27
Quote Anchor link
Reshad F op 28/06/2012 16:37:22:
ik kom er nog steeds niet uit waarom hij verwacht dat classname hetzelfde heet als het bestandje

Nogmaals, je schrijft het zelf, dus je snapt niet wat je doet. Belangrijke observatie, want dan wordt het erg moeilijk om het op te lossen.

Knip en plak om de juiste delen even achter elkaar te zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$car
= new loginform();

// het pad ophalen
$path = $className;

$file = $base . "/" . "/lib/" . $path . '.php';
?>

Je plakt dus gewoon de class achter een pad dat je definieert en daar nog een keer .php achter. Logisch dus dat class = filenaam geldt.
 
Reshad F

Reshad F

28/06/2012 17:01:22
Quote Anchor link
hmm dat begrijp ik nu.

maar hoe zou ik dit anders moeten doen dan? of hoort het ook zo dat een bestandje vernoemd wordt exact aan de class
 
Wouter J

Wouter J

28/06/2012 17:02:31
Quote Anchor link
Ja, dat hoort zo. En het path naar het bestandje exact naar de klasse naam. Dus /lib/Post/BlogPost zou een klasse krijgen die Post_BlogPost heet oid.
 
Erwin H

Erwin H

28/06/2012 17:09:21
Quote Anchor link
Als je het niet doet, hoe ga je dan op basis van de classname het bestand bepalen?
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

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.