Kleine Vragen Topic #4

Gestart doorOne2xs1.965 reacties23.994 weergaven

1.966 berichten · pagina 111 van 132

Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Eerdere citaten tonen
Stef schreef:
Ik heb op dit moment een class die er ongeveer zo uitziet:
[COLOR= #0000BB]<?php[/COLOR]

[URL="http://www.php.net/class"]class[/URL] Account
[COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$eigenschap1[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$eigenschap2[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$id[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/is_numeric"]is_numeric[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$id[/COLOR][COLOR= #007700])) {[/COLOR]
            [COLOR= #0000BB]$db[/COLOR] [COLOR= #007700]= new[/COLOR] Database[COLOR= #007700]([/COLOR][COLOR= #DD0000]"Databasenaam"[/COLOR][COLOR= #007700]);[/COLOR]
            [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]= ;[/COLOR][COLOR= #FF8000]//Hier wordt een query uitgevoerd enzo[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]eigenschap1 [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]][[/COLOR][COLOR= #DD0000]eigenschap1[/COLOR][COLOR= #007700]];[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]-[/COLOR]eigenschap2 [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]][[/COLOR][COLOR= #DD0000]eigenschap2[/COLOR][COLOR= #007700]];[/COLOR]
            [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]===[/COLOR] false[COLOR= #007700]) {[/COLOR]
                [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"Error: query returned false."[/COLOR][COLOR= #007700];
            }
        }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"Wrong use of function. Use an integer as parameter."[/COLOR][COLOR= #007700];
        }

    }[/COLOR]


Wanneer ik dus een lijstje met accounts wil maken, vraag ik eerst alle account IDs op en daarna initialiseer ik voor ieder ID een account class.
Maar gebruik ik dan niet overdreven veel querys? Is er een nettere manier om dit te doen?
Aantal tips:
- Gebruik excepties i.p.v. echo.
- Dependicy injection
- Ik zou een aparte class aanmaken voor databaseverkeer, bijvoorbeeld AccountDAO (DataAccessObject), hierin kan je dan bijvoorbeeld een functie maken met 1 query alle accounts ophaalt en een array met Account object terugstuurt.

Ik maak op dit moment gebruik van deze Database class:

[COLOR= #0000BB]<?php[/COLOR]

[COLOR= #FF8000]/**
 * Created by PhpStorm.
 * User: Stef van der Wel
 * Date: 23-5-2016
 * Time: 11:15
 */[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Database
[COLOR= #007700]{[/COLOR]
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$host[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"xxx.xxx.x.xx"[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$port[/COLOR] [COLOR= #007700]=[/COLOR] xxxx[COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"xx"[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"xx"[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$database[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$connection[/COLOR][COLOR= #007700];[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __construct[COLOR= #007700]([/COLOR][COLOR= #0000BB]$database[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"StandaardDatabase"[/COLOR][COLOR= #007700])
    {[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]database [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$database[/COLOR][COLOR= #007700];[/COLOR]
        try [COLOR= #007700]{[/COLOR]
[COLOR= #FF8000]//            $this->connection = new PDO("dblib:host=$this->host;dbname=$this->database;charset=utf8mb4", $this->username, $this->password);
//            $this->connection = new PDO("dblib:dbname=$this->database;host=$this->host", $this->username, $this->password);[/COLOR]
            [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]connection [COLOR= #007700]= new[/COLOR] PDO [COLOR= #007700]([/COLOR][COLOR= #DD0000]"dblib:host=$this->host:$this->port;dbname=$this->database;charset=UTF-8"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"$this->username"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"$this->password"[/COLOR][COLOR= #007700]);
        }[/COLOR] catch[COLOR= #007700]([/COLOR]PDOException [COLOR= #0000BB]$e[/COLOR][COLOR= #007700]) {[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"Connection to the database failed"[/COLOR][COLOR= #007700];
        }
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] insert[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$par[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]()) {[/COLOR]
        [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]connection[COLOR= #007700]->[/COLOR]prepare[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$execute[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700]->[/COLOR]execute[COLOR= #007700]([/COLOR][COLOR= #0000BB]$par[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$execute[/COLOR][COLOR= #007700];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] select[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$par[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]()) {[/COLOR]
        [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]connection[COLOR= #007700]->[/COLOR]prepare[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$execute[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700]->[/COLOR]execute[COLOR= #007700]([/COLOR][COLOR= #0000BB]$par[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$execute[/COLOR] [COLOR= #007700]==[/COLOR] true[COLOR= #007700]) {[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700]->[/COLOR]fetchAll[COLOR= #007700]();
        }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
[COLOR= #FF8000]//            return $query->fetchAll(); //false[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
        }
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] delete[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$par[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]()) {[/COLOR]
        [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]connection[COLOR= #007700]->[/COLOR]prepare[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$execute[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700]->[/COLOR]execute[COLOR= #007700]([/COLOR][COLOR= #0000BB]$par[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$execute[/COLOR][COLOR= #007700];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] update[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$par[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]()) {[/COLOR]
        [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]connection[COLOR= #007700]->[/COLOR]prepare[COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$execute[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$query[/COLOR][COLOR= #007700]->[/COLOR]execute[COLOR= #007700]([/COLOR][COLOR= #0000BB]$par[/COLOR][COLOR= #007700]);[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$execute[/COLOR][COLOR= #007700];
    }
    
}[/COLOR]


Ik heb even gegoogled naar Dependency Injection. Wat ik ervan begrijp is dat je gebruik maakt van een andere class waar je data van krijgt, klopt dat?
Dit doe ik dan in principe met een Database class, toch.
Wat ik zou kunnen doen is een functie maken getUserList() en die dan een array laten returnen? Moet die functie dan in de Account class?

Maar zoals je op regel 30 doet gaat m niet worden. De echte account class heeft 19 eigenschappen die ik allemaal uit de database moet ophalen. Die kan ik lastig bij het initialiseren meegeven yummie
toevoeging op donderdag 1 december 2016, 11:45:21:
Maar in ieder geval bedankt voor je tips! smile
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Stef schreef:
Ik heb even gegoogled naar Dependency Injection. Wat ik ervan begrijp is dat je gebruik maakt van een andere class waar je data van krijgt, klopt dat?

Gedeeltelijk. Dependency Injection(DI) is een Software Pattern waarbij je zorgt dat classes een Single Responsibility krijgen/hebben met low coupling en waarbij je gebruik kan maken van Interfacing. Je "injecteert" een dependency in de class die hem nodig heeft, maar geeft de class niet de verantwoordelijkheid om zelf de juiste Instance van die class te maken. Je gaat er vanuit dat wat er meegegeven wordt aan je class via DI voorzien is van de juiste functionaliteiten. Dit kan je bijvoorbeeld dus doen door Interfaces te gebruiken.
Stef schreef:
Dit doe ik dan in principe met een Database class, toch.

Nee. Jij geeft het Account object de verantwoordelijkheid om een Database object aan te maken en daarmee te verbinden naar de database. De Account class heeft nu opeens een extra verantwoordelijkheid. Dit wil deze class helemaal niet!
Bovendien heb je nu het probleem dat als je opeens meerdere databases gaat gebruiken (MySQL en MSSQL bijvoorbeeld), dat je plots je Account object moet gaan aanpassen en weer allerlei trucjes moet gebruiken om de juiste database op te halen.
DI maakt dit een stuk eenvoudiger. Je geeft namelijk aan de Account class een Database object mee waarmee hij mag praten naar de database. Welke database dit is maakt de Account class niet uit. Al is het een Mock database class (handig voor unittests!), de Account class kan zonder problemen de functies aanroepen en wat er verder mee gebeurd is voor Account niet relevant.
Stef schreef:
Wat ik zou kunnen doen is een functie maken getUserList() en die dan een array laten returnen? Moet die functie dan in de Account class?

Nee. Account is een Model. Voor jouw applicatie moet Account niets meer zijn dan een schil die de huidige staat van Account bij wil houden (dus data uit de database) en deze wil manipuleren.
Hiervoor is de DAO (Data Acces Object). De DAO zorgt dat je een array krijgt van Account objecten door een getUserList() aanroep te doen.
Stef schreef:
Maar zoals je op regel 30 doet gaat m niet worden. De echte account class heeft 19 eigenschappen die ik allemaal uit de database moet ophalen. Die kan ik lastig bij het initialiseren meegeven yummie
Dan geef je alle eigenschappen als een array terug en itereer je over de array, of maak je gebruik van magic methods zoals __get en __set:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Account [COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] [COLOR= #0000BB]$data[/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]$data[/COLOR][COLOR= #007700]) 
    {[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$data[/COLOR][COLOR= #007700];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __get[COLOR= #007700]([/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]) 
    {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data[COLOR= #007700][[/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __set[COLOR= #007700]([/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
    {[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data[COLOR= #007700][[/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]] =[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
    }
}[/COLOR]
Het is maar net hoe complex je het wil maken. Maar zo heb je je applicatie vanaf de grond op netjes opgebouwd en is het in de toekomst beter te onderhouden en uit te breiden.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Eerdere citaten tonen
Stef schreef:
Ik heb even gegoogled naar Dependency Injection. Wat ik ervan begrijp is dat je gebruik maakt van een andere class waar je data van krijgt, klopt dat?
Gedeeltelijk. Dependency Injection(DI) is een Software Pattern waarbij je zorgt dat classes een Single Responsibility krijgen/hebben met low coupling en waarbij je gebruik kan maken van Interfacing. Je "injecteert" een dependency in de class die hem nodig heeft, maar geeft de class niet de verantwoordelijkheid om zelf de juiste Instance van die class te maken. Je gaat er vanuit dat wat er meegegeven wordt aan je class via DI voorzien is van de juiste functionaliteiten. Dit kan je bijvoorbeeld dus doen door Interfaces te gebruiken.
Eerdere citaten tonen
Stef schreef:
Dit doe ik dan in principe met een Database class, toch.
Nee. Jij geeft het Account object de verantwoordelijkheid om een Database object aan te maken en daarmee te verbinden naar de database. De Account class heeft nu opeens een extra verantwoordelijkheid. Dit wil deze class helemaal niet!
Bovendien heb je nu het probleem dat als je opeens meerdere databases gaat gebruiken (MySQL en MSSQL bijvoorbeeld), dat je plots je Account object moet gaan aanpassen en weer allerlei trucjes moet gebruiken om de juiste database op te halen.
DI maakt dit een stuk eenvoudiger. Je geeft namelijk aan de Account class een Database object mee waarmee hij mag praten naar de database. Welke database dit is maakt de Account class niet uit. Al is het een Mock database class (handig voor unittests!), de Account class kan zonder problemen de functies aanroepen en wat er verder mee gebeurd is voor Account niet relevant.
Eerdere citaten tonen
Stef schreef:
Wat ik zou kunnen doen is een functie maken getUserList() en die dan een array laten returnen? Moet die functie dan in de Account class?
Nee. Account is een Model. Voor jouw applicatie moet Account niets meer zijn dan een schil die de huidige staat van Account bij wil houden (dus data uit de database) en deze wil manipuleren.
Hiervoor is de DAO (Data Acces Object). De DAO zorgt dat je een array krijgt van Account objecten door een getUserList() aanroep te doen.
Eerdere citaten tonen
Stef schreef:
Maar zoals je op regel 30 doet gaat m niet worden. De echte account class heeft 19 eigenschappen die ik allemaal uit de database moet ophalen. Die kan ik lastig bij het initialiseren meegeven yummie
Dan geef je alle eigenschappen als een array terug en itereer je over de array, of maak je gebruik van magic methods zoals __get en __set:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/class"]class[/URL] Account [COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/private"]private[/URL] [COLOR= #007700]function[/COLOR] [COLOR= #0000BB]$data[/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]$data[/COLOR][COLOR= #007700]) 
    {[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$data[/COLOR][COLOR= #007700];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __get[COLOR= #007700]([/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]) 
    {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data[COLOR= #007700][[/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]];
    }[/COLOR]

    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] __set[COLOR= #007700]([/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
    {[/COLOR]
        [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]data[COLOR= #007700][[/COLOR][COLOR= #0000BB]$property[/COLOR][COLOR= #007700]] =[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
    }
}[/COLOR]


Het is maar net hoe complex je het wil maken. Maar zo heb je je applicatie vanaf de grond op netjes opgebouwd en is het in de toekomst beter te onderhouden en uit te breiden.
Ah super duidelijk, bedankt!
Het is dus helemaal niet de bedoeling om direct in de Account class queries uit te voeren. Gaat een vervelend grapje zijn om dat allemaal te herschrijven emoIk heb net deze pagina gebruikt om het te begrijpen. Wat ik daarvan begrijp is dat het eigenlijk ook niet de bedoeling is om direct eigenschappen van een object te gebruiken in de code:

Quote:
You may be wondering why I have gone through and written explicit setters and getters for each value, rather than just making two generic functions (or simply making the class variables public).

Maar wat is dan het hele nut van een property?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Het is niet erg hoor, maar als je goede design principles aan wil houden kan je beter onderhoudbare/testbare code schrijven. Je hoeft het hele systeem nou ook niet helemaal om te gooien, maar het is wel iets waar je rekening mee kan houden.

Wat betreft properties: Getters en setters zijn handig als je nog iets wil doen met de data voor je hem get of set. Je zou bijvoorbeeld kunnen valideren dat een bepaalde procent-houdende property een waarde krijgt die tussen de 0 en 100 zit voordat je hem set. Zoals ook in dat artikel staat:

Quote:
The primary reason for this has more to do with coding standards than anything else. It is usually good practice to prevent class variables from being accessed directly. This way you dont have to anticipate what might happen ouside the class. By declaring functions for each specific value, you have more control over the use of each value as well. For instance, where appropriate, you could use the addslashes() and stripslashes() functions to automatically massage data before it is inserted into the database.

Het is niet per se verkeerd om een property public te maken. Dat is afhankelijk van wat je er mee wil bereiken. Hetzelfde geld uiteraard voor protected en private properties.
0
Berichten
7.498
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik heb ingesteld dat mijn scherm na 5 minuten geen actitiveit wordt uitgeschakeld (zwart scherm dus)
Is het ook mogelijk om een fotos oid. te laten zien?
Windows 10 smile
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
@Luuko Tuurlijk. Zoek maar eens op Schermbeveiliging bij de Beeldscherminstellingen in Windows 10. Dan kan je ook fotos instellen.

Maar ikzelf laat de boel lekker op zwart gaan na 10 minuten, lekker stroom besparend. Na nog een 10 minuten gaat de boel op standby in stroombesparingsmodus.

Het is wel k*t te vinden in Windows 10. Je moet er echt naar zoeken frusty dan dat je er even snel via Configuratiescherm of Rechtsklik->Beeldscherminstellingen naar toe klikt.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Ik moet een verslag schrijven over webservices.
Maar wat is nou eigenlijk een webservice? Is dat bijvoorbeeld XML en JSON, of SOAP en REST?
Of is het een combinatie daarvan?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
XML en JSON zijn de manieren waarop je data weergeeft
SOAP en REST zijn de manieren waarop je data opvraagt

Een webservice is een interface die je aanroept (bijvoorbeeld via SOAP of een RESTful API) waarmee je kan communiceren met een server (meestal een API op een website) zonder dat je toegang hoeft te hebben tot de interne code van die website. Deze kan dan bijvoorbeeld in JSON of XML een antwoord terug geven.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
XML en JSON zijn de manieren waarop je data weergeeft
SOAP en REST zijn de manieren waarop je data opvraagt

Een webservice is een interface die je aanroept (bijvoorbeeld via SOAP of een RESTful API) waarmee je kan communiceren met een server (meestal een API op een website) zonder dat je toegang hoeft te hebben tot de interne code van die website. Deze kan dan bijvoorbeeld in JSON of XML een antwoord terug geven.
Oké thanks.
Dus eigenlijk is het een combinatie van een Web Service Description Language en een protocol yummie
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Ik werk momenteel met FreeWall en dat vind ik best prettig werken.
Nu wil ik het volgende maken:
Afbeelding
Ik gebruik hiervoor de volgende javascript:

<script type="text/javascript">
$(function() {
    var wall = new Freewall("#freewall");
    wall.fitWidth();
    var wall2 = new Freewall(".cellImages");
    wall2.reset({
        gutterX: 0,
        gutterY: 0,
        cellW: 30,
        cellH: 30
    });
    wall2.fitWidth();
    $(window).resize(function() {
        wall.refresh();
    });
})
</script>


Het probleem is dat de "hoogte" van de vorige cellImage wordt onthouden (waarschijnlijk omdat die in dezelfde geinitialiseerde class zitten).
Het resultaat is dus dit:
Afbeelding
Voorbeeld
Weet iemand hoe ik dit kan fixen?
Ik zit te denken aan een foreach gebruiken en dan telkens een nieuwe class te initialiseren, maar geen idee hoe yummie
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Stef schreef:
Ik werk momenteel met FreeWall en dat vind ik best prettig werken.
Nu wil ik het volgende maken:
Afbeelding tonen
Afbeelding
Ik gebruik hiervoor de volgende javascript:

<script type="text/javascript">
$(function() {
    var wall = new Freewall("#freewall");
    wall.fitWidth();
    var wall2 = new Freewall(".cellImages");
    wall2.reset({
        gutterX: 0,
        gutterY: 0,
        cellW: 30,
        cellH: 30
    });
    wall2.fitWidth();
    $(window).resize(function() {
        wall.refresh();
    });
})
</script>


Het probleem is dat de "hoogte" van de vorige cellImage wordt onthouden (waarschijnlijk omdat die in dezelfde geinitialiseerde class zitten).
Het resultaat is dus dit:
Afbeelding tonen
Afbeelding
Voorbeeld
Weet iemand hoe ik dit kan fixen?
Ik zit te denken aan een foreach gebruiken en dan telkens een nieuwe class te initialiseren, maar geen idee hoe yummie
Ik heb nu dit stukje code gevonden op de site van freewall:

$(function() {
                $(".free-wall").each(function() {
                    var wall = new Freewall(this);
                    wall.reset({
                        selector: .size320,
                        cellW: 320,
                        cellH: 320,
                        fixSize: 0,
                        gutterY: 20,
                        gutterX: 20,
                        onResize: function() {
                            wall.fitWidth();
                        }
                    })
                    wall.fitWidth();
                });
                $(window).trigger("resize");
            });


Dus dat heb ik gebruikt:

$(function() {
        $(".free-wall").each(function() {
            var wall = new Freewall(this);
            wall.reset({
                selector: .wallcell,
                onResize: function() {
                    wall.fitWidth();
                }
            });
            wall.fitWidth();
        });
        $(window).trigger("resize");
    });


Maar ik krijg geen afbeeldingen te zien confused
Afbeelding
Weet iemand wat ik fout doe?
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Dit is mijn jquery:

$(function() {
    $(.zone, .firstzone).each(function() {
        var count = 0;
        $(this).find(.personPlace).each(function() {
            $(this).css({transform: rotate( + count + deg)});
            $(this).find(.person).css({transform: rotate( + 180-count + )});
            count += 18;
        });
    });
});


Ik probeer voor iedere .zone de count te resetten naar 0. Maar op een of andere manier blijft hij doorgaan met tellen waar ie was gebleven. Weet iemand waardoor dat kan komen?
0
Berichten
3.532
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hoi,

Ik heb een array:

$voertuigen[] = array(
                        img => $img,
                        nummer => $nummer,
                        soort => $rnaam,
                        aankomst => $formatted
                        );


En ik wil dat de array wordt gesorteerd op de aankomsttijd in minuten uit $formatted komt 15:00 (Minutenconfusedeconden)
En het laagste aantal moet bovenaan komen te staan.
Nu heb ik dit gevonden

usort($voertuigen, function ($a, $b) {
        return $b[aankomst] > $a[aankomst];
});


Maar nu komt er het volgende uit:

Quote:
9:42, 9:42, 13:43, 10:40

En zonder die usort komt dit er uit:

Quote:
13:43, 9:42, 10:40, 9:42

Hoe zorg ik dat ze goed gesorteerd worden?
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Vervang return $b[aankomst] > $a[aankomst]; door return $b[aankomst] - $a[aankomst];
0
Berichten
3.532
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Vervang return $b[aankomst] > $a[aankomst]; door return $b[aankomst] - $a[aankomst];
Nu staat het hoogste aantal boven, ik wil graag dat de laagste bovenaan staat. Hoe doe ik dit?
laatmaar, $b en $a omgewisseld Dankjewel biggrin
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