Oop in PHP 5

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Jan geen

Jan geen

21/11/2007 15:11:00
Quote Anchor link
private - alleen aanspreekbaar vanuit de klasse zelf
protected - ook aanspreekbaar vanuit klassen die erven uit deze klasse
public - overal aanspreekbaar

In principe zijn je instantie variabelen altijd private of protected. Methoden die alleen binnen een klasse gebruikt worden zijn private en methoden die ook buiten je klasse worden gebruikt zijn public. Lijkt mij dat je login, logout, activate enz ook buiten je klasse wil aanspreken (bijv. in je login script) dus die moeten public zijn.

Edit:
Kijk ook eens naar __get() en __set()
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
 
PHP hulp

PHP hulp

24/12/2024 00:13:22
 
Jelmer -

Jelmer -

21/11/2007 16:44:00
Quote Anchor link
Een klasse hoeft eigenlijk alleen maar methods te hebben die direct invloed hebben op de data van het object zelf, en het object alleen. Anders zou je ook methods als 'postTopic' en 'requestsPage' kunnen maken. Maar die methods hebben geen invloed op User, ze gebruiken informatie van User.

StatisticsService->instanceForPage($page)->registerRequestOfUser($user);

De klasse StatisticsService roept dan in registerRequestOfUser() zelf wel $user->id() aan, aangezien dat de data is die nodig is.

Authentificatie zou ik ook niet in een User-klasse doen, mede om dezelfde reden. Daarnaast kan je meerdere, verschillende instanties van User hebben, maar kan er maar 1 user tegelijkertijd zijn ingelogd. Het gaat immers om de gebruiker, de bezoeker van de site. Die is niet meerdere personen tegelijk. Authentificatie zou je als een aparte klasse, of beter gezegd service kunnen beschouwen denk ik. (Met service bedoel ik een klasse, een object waar maar 1 instantie van kan bestaan. Zoek maar op het singleton design pattern)

De method activate() hoort wel thuis in User, aangezien deze een directe eigenschap van User aanpast.
 
Robert Deiman

Robert Deiman

21/11/2007 23:31:00
Quote Anchor link
Hmm... ik denk dat ik het begrijp Jelmer.

Authentificatie -> Het inloggen van een user is inderdaad handiger om appart te houden, omdat het geen directe invloed heeft op de eigenschappen van de user.

Sendmail -> is ook niet direct op de user, mail moet ook een andere class zijn die het e-mail adres van de Userclass (waarin een nieuwe user kan worden aangemaakt) meeneemt.

Logout -> Zelfde als bij Authentificatie. -> Geen directe invloed op de user

Subscribe -> Kan wel in de class, met het aanmaken van een nieuwe user oefen je eigenlijk direct invloed uit op een user.. Aan de andere kant denk ik dat een class voor het hele inschrijf gebeuren (waarin username/ pass controle, mail controle enz.. komen) niet zou misstaan hier

Setlevel -> Wel blijven staan in de class, omdat je direct 1 van de eigenschappen van user verandert.

Activate -> Ook een directe aanpassing van 1 van de uservariabelen, dus wel blijven staan.
 
PHP erik

PHP erik

21/11/2007 23:39:00
Quote Anchor link
Authentificatie -> Authenticatie

Authenticatie (= inloggen) is een aparte class, authorisatie ook (= rechten, mag deze user wel updaten? etc), mail ook, subscribe is eigenlijk gewoon een simpele query dus dat is een functie in je data-(access-)model. Je hoeft niet overal een klasse voor te maken, sommige dingen zijn gewoon databasehandelingen, ga ook eens kijken naar Model View Controller (vooral Model).
 
Robert Deiman

Robert Deiman

22/11/2007 00:00:00
Quote Anchor link
@PHPerik

Het was ook niet de bedoeling om overal een aparte class voor te maken, maar meer dat een aantal dingen niet in de class komen. -> authorisatie enzo wel als class snap ik. ('t ging nu puur nog ff om de user class, waar zo heel wat minder van overblijft :s)

Dingen die ik zei dat uit die class mochten -> Kan inderdaad gewoon in een andere class. (zoals subscribe als functie in m'n data-(acces)model zou kunnen.
 
PHP erik

PHP erik

22/11/2007 00:00:00
Quote Anchor link
:) oke helder
 
Robert Deiman

Robert Deiman

22/11/2007 11:21:00
Quote Anchor link
Wat vinden jullie eigenlijk van deze tutorial? (tjah.. 'k ben nog niet zo heel ver ermee, maar de opbouw lijkt me wel een juiste)Het is dan wel Engels, maar als ICT-er moet dat een makkie zijn :P

Klik
 
Gerben Jacobs

Gerben Jacobs

22/11/2007 11:27:00
Quote Anchor link
Ik krijg een 404?

Heb het al;
http://www.phpfreaks.com/tutorials/150/0.php

... tis jammer dat ie in PHP4 gemaakt is. (Edit: Nouja, sommige gedeelten dan)
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
 
Robert Deiman

Robert Deiman

22/11/2007 12:04:00
Quote Anchor link
@Gerben

Hij geeft ook aan dat sommige dingen voor php4 zijn, maar geeft ook (meestal) de php5 variant.

Edit:

Ik vind het voorbeeld wat daar gebruikt wordt ook wel leuk. Een tastbaar en bekend ding, waar je jezelf een beeld bij kan maken.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
PHP erik

PHP erik

22/11/2007 14:08:00
Quote Anchor link
Ik vind het eigenlijk een beetje waardeloze tutorial. Deze tutorial leert je eigenlijk de syntax en werkt weer met hond-dier-voorbeelden, dat is niet praktisch. Dit gaat dus weer over syntax en niet echt over OOP naar mijn mening. Al snap je dit helemaal dan ben je nog steeds niet in staat goed object georienteerd te werken waarschijnlijk.

Ik denk dat de beste manier ook hier weer is om een beetje te klooien met wat er al bestaat. Ik zou zelf bijvoorbeeld eens naar Zend Framework kijken (je hoeft het niet te gebruiken, alleen kijken), dan zie je wanneer men nieuwe objecten maakt en wanneer niet en hoe deze in elkaar zitten.
 
Robert Deiman

Robert Deiman

22/11/2007 14:26:00
Quote Anchor link
Nou, ik heb het zend framework eens gedownload en zal eens proberen of ik dat kan "ontcijferen". Misschien dat ik bij sommige stukken vragen heb, of probeer of ik kan "uitleggen" waarom bepaalde keuzes zijn gemaakt en dat ik dat hier post.
Op die manier zal ik er toch wel uit moeten komen denk ik :) De gewone PHP syntax ken ik wel al, dit is een nieuwe stap, die ik vind ik onderhand wel eens zal mogen/ moeten maken.


Edit:
Ok, ben al even aan het kijken geslagen. Ik zie dat het framework de includes gewoon als PHP bestand opslaat en niet (zoals velen wel doen) als .inc.php
Het ziet er op het 1e gezicht vrij onduidelijk uit, maar dat komt door de vele losse bestandjes. Ik kan het in ieder geval al wel lezen.. Ga er eens rustig mee verder, en kijken of ik het ga snappen.
Zoals voor Currency ben ik al verder aan het kijken geweest. Ik begrijp dat die via de "locale.php" controleerd welke regio je bent, stelt via de data.php een aantal dingen in (uit een XML bestand voor de taal) en gebruikt dat door het hele systeem, dus ook voor het Currency symbool

Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 

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.