__autoload in class?

Gestart doorWiitse4 reacties98 weergaven

5 berichten · pagina 1 van 1

Wiitse

Lid · Topicstarter

Berichten
6.722
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik ben maar weer eens begonnen met scripten en ik zit nu direct al met een vraag. Ik wil namelijk alles oop doen. Ik wil graag de __autoload methode gebruiken voor het laden van classes. Die functie zou ik graag in een class willen zetten, maar werkt het dan wel? Een voorbeeld van mijn code staat hieronder weergegeven.

classes/Page.class.php:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Page
[COLOR= #007700]{
    function[/COLOR] __construct[COLOR= #007700]() {[/COLOR]
        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]blaat[/COLOR][COLOR= #007700];
    }

    function[/COLOR] __autoload[COLOR= #007700]([/COLOR][COLOR= #0000BB]$class[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/include_once"]include_once[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]classes/[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$class[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000].class.php[/COLOR][COLOR= #007700]);
    }
}[/COLOR]
?>


classes/Test.class.php:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Test
[COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [URL="http://www.php.net/static"]static[/URL] [COLOR= #007700]function[/COLOR] blaat[COLOR= #007700]() {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]blaat[/COLOR][COLOR= #007700];
    }
}[/COLOR]
?>


index.php

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/include"]include[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]classes/Page.class.php[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #0000BB]$page[/COLOR] [COLOR= #007700]= new[/COLOR] Page[COLOR= #007700];[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] Test[COLOR= #007700]::[/COLOR]blaat[COLOR= #007700]();[/COLOR]
?>
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Als het goed is moet dit werken. Al gebruik ik gewoon een apparte autoload functie (in de config bijvoorbeeld). Dus niet in een klasse wink
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Zoals Rik zegt kun je dat beter ergens anders doen.

In je index.php is het beste, bij echt OOP is het namelijk zo dat de index alleen maar wat includes en een classloader bevat (omdat je met templates werkt)

Afgeraden is om direct te echo-en vanuit je classfuncties, dit is niet OOP, return liever je waardes en echo dan de class->functie of de class:aahunctie

Dit omdat je over bijvoorbeeld de function getUserName() op sommige plaatsen de naam wil laten zien, maar misschien wil je tussendoor ook berekeningen doen met bijvoorbeeld het aantal letters in de naam etc.

Dan kun je

echo $class->getUserName($henkie);
doen en
strlen($class->getUserName($henkie));

Als je wél in je functie echot dan moet je voor die 2de een nieuwe functie maken.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
De enige classes waarin je hoort te echoën zijn error-handlers.
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Idd.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren