[PHP] Class vraag

Gestart doorRik7 reacties41 weergaven

8 berichten · pagina 1 van 1

Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Heya one2xs,

Zoals jullie weten had ik een DB-class gemaakt. Alleen ik heb vaker gezien dat mensen deze class gebruiken binnen een andere [core] class.

Dan zie je het vaak zo:
$core->mysql->query();

Nu zei iemand op msn (Erik) dat je dat kon doen op deze manier:

[COLOR= #0000BB]<?php[/COLOR] 
[URL="http://www.php.net/class"]class[/URL] core [COLOR= #007700]{[/COLOR]

    __constructor [COLOR= #007700]{[/COLOR]

        [COLOR= #0000BB]$mysql[/COLOR] [COLOR= #007700]= new[/COLOR] database[COLOR= #007700]();
    }

}[/COLOR]

[COLOR= #FF8000]// andere pagina[/COLOR]
[COLOR= #0000BB]$core[/COLOR] [COLOR= #007700]= new[/COLOR] core[COLOR= #007700]();[/COLOR]
?>


Maar is dit wel een goede manier, of kan je het beter op een andere manier doen?

Verder, wat is precies het verschil tussen het aanroepen van een class - functie op de volgende manieren:
$mysql = new database();
$mysql->query();
EN
database::query();
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@Rik; Dan wel de core-class een beetje zo:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] core
[COLOR= #007700]{[/COLOR]
     [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700];[/COLOR]
     
     [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __construct[COLOR= #007700]([/COLOR][URL="http://www.php.net/array"]array[/URL] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700])
     {[/COLOR]
           [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]mysql [COLOR= #007700]= new[/COLOR] DataBase[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]host[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]user[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]pass[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]user[/COLOR][COLOR= #007700]]);
     }
}[/COLOR]
?>
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
> Maar is dit wel een goede manier, of kan je het beter op een andere manier doen?
Dr is geen goede manier. Als jij dat handig vindt werken moet je dat doen. Ik heb het ook zo, puur vanwege het feit dat ik het handig vind werken. Als je gewoon $mysql enzo wil gebruiken dan doe je dat, scheelt je een boel typewerk, maarja, net wat je handig vindt.

> Verder, wat is precies het verschil tussen het aanroepen van een class - functie op de volgende manieren:
2e manier is met statische methodes.
Het enige (?) verschil is dat een statische methode enkel info uit de class kan krijgen, die maakt dus geen deel uit van een object. Je kunt dus met een statische functie geen deel van je object aanpassen, simpelweg omdat je geen object hebt.
Beetje vaag om uit te leggen, maar als je t niet snapt zeg je t maar. emo
0
Berichten
13.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
bij trade-place.nl heb ik bijvoorbeeld dit als core:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Core [COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$mysql[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$leden[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$cHTTP[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$one2xs[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$dutchleader[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$SEO[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$c_aan[/COLOR][COLOR= #007700];
    
    function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$host[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$user[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]){[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]mysql [COLOR= #007700]= new[/COLOR] MySQL[COLOR= #007700]([/COLOR][COLOR= #0000BB]$host[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$user[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]leden [COLOR= #007700]= new[/COLOR] Leden[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]mysql[COLOR= #007700]);
    }
    
    function[/COLOR] cHTTP[COLOR= #007700](){[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]cHTTP [COLOR= #007700]= new[/COLOR] cHTTP[COLOR= #007700];[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]c_aan [COLOR= #007700]=[/COLOR] true[COLOR= #007700];
    }
    
    function[/COLOR] one2xs[COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700]){[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]c_aan [COLOR= #007700]!=[/COLOR] true[COLOR= #007700]){[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]cHTTP[COLOR= #007700]();
        }[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]one2xs [COLOR= #007700]= new[/COLOR] one2xs[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]cHTTP[COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000]""[/COLOR] [COLOR= #007700]&&[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700]){[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]one2xs[COLOR= #007700]->[/COLOR]login[COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700]);
        }
    }
    
    function[/COLOR] dutchleader[COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700]){[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]c_aan [COLOR= #007700]!=[/COLOR] true[COLOR= #007700]){[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]cHTTP[COLOR= #007700]();
        }[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]dutchleader [COLOR= #007700]= new[/COLOR] DutchLeader[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]cHTTP[COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000][/COLOR] [COLOR= #007700]&&[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700]){[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]dutchleader[COLOR= #007700]->[/COLOR]login[COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700]);
        }
    }
    
    function[/COLOR] SEO[COLOR= #007700](){[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]SEO [COLOR= #007700]= new[/COLOR] SEO[COLOR= #007700];[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]SEO[COLOR= #007700];
    }
}[/COLOR]
?>


en dan roep ik hem zo aan:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.core.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.mysql.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.leden.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.chttp.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.one2xs.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.dutchleader.php"[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/include"]include[/URL] [COLOR= #DD0000]"class.seo.php"[/COLOR][COLOR= #007700];

function[/COLOR] is_getal[COLOR= #007700]([/COLOR][COLOR= #0000BB]$waarde[/COLOR][COLOR= #007700])
{[/COLOR]
    [COLOR= #0000BB]$in[/COLOR] [COLOR= #007700]= ([/COLOR][URL="http://www.php.net/is_float"]is_float[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$waarde[/COLOR][COLOR= #007700]) ||[/COLOR] [URL="http://www.php.net/ctype_digit"]ctype_digit[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$waarde[/COLOR][COLOR= #007700])) ?[/COLOR] true [COLOR= #007700]:[/COLOR] false[COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$in[/COLOR][COLOR= #007700];
}[/COLOR]

[COLOR= #0000BB]$core[/COLOR] [COLOR= #007700]= new[/COLOR] Core[COLOR= #007700]([/COLOR][COLOR= #DD0000]"localhost"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"sjoerd_tp"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"password"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"sjoerd_tp"[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #0000BB]$vk[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$core[/COLOR][COLOR= #007700]->[/COLOR]mysql[COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT id,eindigt,(SELECT count(id) FROM boden WHERE veiling=v.id) AS boden FROM veiling AS v WHERE open=1"[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #FF8000]//hier nog cronjob van veilingen
//dit wordt dan geinclude op elke pagina[/COLOR]
?>


Dat include ik dan op elke pagina, weet niet of dat goed is.. emo
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Lennard schreef:
> Maar is dit wel een goede manier, of kan je het beter op een andere manier doen?
Dr is geen goede manier. Als jij dat handig vindt werken moet je dat doen. Ik heb het ook zo, puur vanwege het feit dat ik het handig vind werken. Als je gewoon $mysql enzo wil gebruiken dan doe je dat, scheelt je een boel typewerk, maarja, net wat je handig vindt.

> Verder, wat is precies het verschil tussen het aanroepen van een class - functie op de volgende manieren:
2e manier is met statische methodes.
Het enige (?) verschil is dat een statische methode enkel info uit de class kan krijgen, die maakt dus geen deel uit van een object. Je kunt dus met een statische functie geen deel van je object aanpassen, simpelweg omdat je geen object hebt.
Beetje vaag om uit te leggen, maar als je t niet snapt zeg je t maar. emo
Okay, maar ik bedoelde meer in de zin van, klopt dat wel dat je het zo (handig) kan doen, en dat antwoord is dus ja.

Die tweede vraag snap ik nog steeds niet emo
edit Moet het trouwens niet global $mysql zijn in plaats van public $mysql ?

edit 2: En hoe geef jij parameters mee aan een class? dizzy ( @ Core("localhost", "sjoerd_tp", "password", "sjoerd_tp"); )
0
Berichten
13.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
edit 2: En hoe geef jij parameters mee aan een class? dizzy ( @ Core("localhost", "sjoerd_tp", "password", "sjoerd_tp"); )
als je een class start dan roept hij __construct aan smile
[COLOR= #0000BB]<?php[/COLOR]
    [COLOR= #007700]function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$host[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$user[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]){[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]mysql [COLOR= #007700]= new[/COLOR] MySQL[COLOR= #007700]([/COLOR][COLOR= #0000BB]$host[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$user[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]leden [COLOR= #007700]= new[/COLOR] Leden[COLOR= #007700]([/COLOR][COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]mysql[COLOR= #007700]);
    }[/COLOR]
?>
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
dus alle parameters die je aan construct meegeeft kan je invullen door middel van new core($parameters, $in, $construct)

Weet ik da ook weer biggrin
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
dus alle parameters die je aan construct meegeeft kan je invullen door middel van new core($parameters, $in, $construct)
Weet ik da ook weer biggrin

Ja.
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