Avatar billede palito Nybegynder
10. september 2008 - 22:46 Der er 7 kommentarer

Hvorfor kan __construct() ikke tilgås ved Klassenavn::metode()

Ved nogle hvad idéen er i, at det ikke kan lade sig gøre at køre __construct() via Klassenavn::metodeNavn()?

Bliver det eventuelt ændret i PHP6?
Avatar billede erikjacobsen Ekspert
10. september 2008 - 22:51 #1
Fordi den kaldes når man siger new.
Avatar billede Slettet bruger
11. september 2008 - 02:56 #2
Ja lige præcis erikjacobsen.
Den bliver altid kaldt når du kalder din klasse.
Avatar billede dkfire Nybegynder
11. september 2008 - 09:32 #3
gtax87: "Den bliver altid kaldt når du kalder din klasse." Det er jo netop ikke korrekt. Den bliver kun kaldt når du laver et nyt objekt af klassen, ikke når du tilgår metoderne direkte som palito gør.


palito: Tror ikke du skal regne med at det ændre sig lige forløbig. __construct er en speciel funktion som kun køres når du laver et nyt objekt af din klasse. Hvis du vil have __construct til at kører når du kalder funktioner som en singleton, dvs som Klassenavn::metodeNavn(), bliver du nød til at lave noget til din funktion somlaver et nyt objekt.
Prøv evt at søge efter oop og singleton og php.
Avatar billede Slettet bruger
11. september 2008 - 13:56 #4
dkfire:> Hvis du tilgår medtoderne direkte, kalder du heller ikke klassen, men en del af den hvilke så er en metode/funktion.
Men tror begge vi ved hvad jeg mente.
Avatar billede palito Nybegynder
12. september 2008 - 14:48 #5
jeg er godt klar over hvordan det fungerer - jeg forstår bare ikke hvorfor. i mine øjne virker det meget underligt, at __construct() ikke bliver kørt hver eneste gang der køres noget igennem klassen.
Avatar billede jensgram Nybegynder
12. september 2008 - 14:49 #6
Jamen formålet er jo netop, at den bliver kørt én gang: Når et objekt _konstrueres_ af typen (klassen)!
Avatar billede coderdk Praktikant
15. september 2008 - 00:03 #7
blah::funktion() <- indikerer kald af en statisk funktion, der bliver mao ikke konstrueret et objekt, derfor kaldes constructoren ikke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester