abonnementen ibood.com bol.com Gearbest
pi_144547083
registreer om deze reclame te verbergen
php.jpg


Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wŠt er niet lukt en wťlke foutmelding je precies krijgt :)

Zie ook:
PHP Dataverwerking
OfficiŽle PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL

Succes heren met het volgende deeltje!
pi_144738323
registreer om deze reclame te verbergen
Wat is het nut ervan om iets static te definieren?

Als ik het doe:

1
2
3
4
5
6
7
class voorbeeld {
    public function lala(){
        echo "Hoi"
    }
}

 voorbeeld::lala();

Waar is die static bij function dan voor nodig :?

En op een andere manier:

1
2
3
4
5
6
7
class voorbeeld {
    static function lala(){
        echo "Hoi"
    }
}
   $voorbeeld = new voorbeeld;
   $voorbeeld->lala();
Wat voor zin heeft static dan nog?
pi_144739767
quote:
1s.gif Op zaterdag 20 september 2014 23:25 schreef Robuustheid het volgende:
Wat is het nut ervan om iets static te definieren?

Als ik het doe:
[ code verwijderd ]


Waar is die static bij function dan voor nodig :?

En op een andere manier:
[ code verwijderd ]

Wat voor zin heeft static dan nog?

Een static-methode is handig als de methode niet iets met de klasse zelf hoeft te doen.

Stel dat je bijvoorbeeld een Math-klasse hebt. Is het niet een beetje vreemd om een object Math te hebben om dan pas methodes te kunnen gebruiken voor abs etc.? Dan kun je beter al die Math-methodes static maken.
pi_144739830
En als je er niet-static functie aanroept alsof 'ie wel static is, dan kun je gekke dingen krijgen. Bijv. dat autoload soms niet werkt en heel raar doet, zoals ik in het vorige topic leerde.
pi_144739951
registreer om deze reclame te verbergen
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
pi_144740160
quote:
1s.gif Op zaterdag 20 september 2014 23:25 schreef Robuustheid het volgende:
Wat is het nut ervan om iets static te definieren?

Als ik het doe:
[ code verwijderd ]


Waar is die static bij function dan voor nodig :?

En op een andere manier:
[ code verwijderd ]

Wat voor zin heeft static dan nog?

Het eerste geeft een strict warning in PHP. In de meeste OO talen kan het niet eens.
Desalniettemin gebruik je het bijvoorbeeld voor utility classes, singleton patterns, enzovoort.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
pi_144740199
quote:
1s.gif Op zondag 21 september 2014 00:15 schreef robin007bond het volgende:
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
Hoe bedoel je? Met andere manieren ben ik niet mee bekend.
pi_144741040
quote:
0s.gif Op zondag 21 september 2014 00:24 schreef Robuustheid het volgende:

[..]

Hoe bedoel je? Met andere manieren ben ik niet mee bekend.
Gewoon procedureel. :)
  zondag 21 september 2014 @ 10:07:46 #11
187069 slacker_nl
Sicko pur sang
pi_144746047
quote:
0s.gif Op zondag 21 september 2014 00:08 schreef robin007bond het volgende:

[..]

Een static-methode is handig als de methode niet iets met de klasse zelf hoeft te doen.

Stel dat je bijvoorbeeld een Math-klasse hebt. Is het niet een beetje vreemd om een object Math te hebben om dan pas methodes te kunnen gebruiken voor abs etc.? Dan kun je beter al die Math-methodes static maken.
Waarom zou je het dan uberhaupt OO maken?
In theory there is no difference between theory and practice. In practice there is.
pi_144746075
quote:
1s.gif Op zondag 21 september 2014 10:07 schreef slacker_nl het volgende:

[..]

Waarom zou je het dan uberhaupt OO maken?
Even mezelf quoten:
quote:
1s.gif Op zondag 21 september 2014 00:15 schreef robin007bond het volgende:
Overigens is het discutabel of je classes met enkel static methodes wel in een klasse moet stoppen of gewoon in een namespace.

Maar ja, geen OOP. :P
Wellicht dat consistentie een reden is.
pi_144746408
Bedankt voor jullie bijdragen. Het is dus geen valide code, maar wordt desondanks wel uitgevoerd.

Als ik error_reporting(E_ALL | E_STRICT); doe, verschijnt er nog steeds geen waarschuwing als ik bovenstaand code uitvoer?
pi_144746607
quote:
0s.gif Op zondag 21 september 2014 10:43 schreef Robuustheid het volgende:
Bedankt voor jullie bijdragen. Het is dus geen valide code, maar wordt desondanks wel uitgevoerd.

Als ik error_reporting(E_ALL | E_STRICT); doe, verschijnt er nog steeds geen waarschuwing als ik bovenstaand code uitvoer?
Probeer het hier maar: http://sandbox.onlinephpfunctions.com/

met deze code:

1
2
3
4
5
6
7
8
9
10
11
<?php
error_reporting
(E_ALL E_STRICT);

class 
voorbeeld {
    public function 
lala() {
        echo 
"Hoi";
    }
}

 
voorbeeld::lala();
?>

Krijg je bij elke versie met uitzondering van 4.4.9 een strict warning.
Als je de E_STRICT en public eruit sloopt en het op 4.4.9 uitvoert, dan krijg je geen melding.

De reden dat je absoluut geen non-static methods als static wilt gaan aanroepen, is dat een non-static method toegang heeft tot de state van een instance. Dan kun je dus problemen krijgen. Probeer dit maar eens uit te voeren:

1
2
3
4
5
6
7
8
9
10
11
<?php
class voorbeeld {
    private 
$a 3;

    public function 
lala($b) {
        echo 
$this->a*$b;
    }
}

 
voorbeeld::lala(3);
?>
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
  zondag 21 september 2014 @ 11:19:30 #15
8130 raptorix
THAI CHARACTER MAITAIKHU
pi_144746958
Static heeft volgens mij ook compile en geheugen technisch voordelen, ik vermoed dat als je iets static definieert deze nooit 2 keer in geheugen zal komen.
pi_144748447
quote:
0s.gif Op zondag 21 september 2014 11:19 schreef raptorix het volgende:
Static heeft volgens mij ook compile en geheugen technisch voordelen, ik vermoed dat als je iets static definieert deze nooit 2 keer in geheugen zal komen.
Dat is allemaal erg marginaal. Natuurlijk, als je elke keer instances moet gaan maken in je code om een of andere utility method aan te roepen, dan is dat niet heel efficiŽnt, maar dat zijn niet de zaken die doorgaans geheugenproblemen veroorzaken.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
pi_144785971
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$mm_type
="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
readfile($path); // outputs the content of the file
exit();
?>
  maandag 22 september 2014 @ 13:24:43 #18
91039 mstx
2x1/2 = 1/2 x 1/2
pi_144786397
quote:
0s.gif Op maandag 22 september 2014 13:09 schreef xaban06 het volgende:
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.
[ code verwijderd ]

Ok man ^O^
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_144788962
quote:
0s.gif Op maandag 22 september 2014 13:09 schreef xaban06 het volgende:
Ik heb een soort van download server gemaakt. PHP script serveert de bestanden. Bestanden zijn tussen de 2GB en 5GB.

Echter stopt de download automatisch na een paar seconde.
[ code verwijderd ]

Je kunt readfile beter niet voor dit soort situaties gebruiken. De gehele file wordt namelijk ingeladen en daarna pas verzonden. Je zult waarschijnlijk al eerder een ‘out of memory’ krijgen.

Een betere oplossing is om het bestand in kleinere blokken te lezen en deze te verzenden: (niet getest)
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$file 
fopen"my-file.raw""rb" );

while ( !
feof($file) ) {
    
$chunk fread$file1024*16 );
    echo 
$chunk;
    
ob_flush();
    
flush();
}

fclose$file );
?>
Americans think 100 years is a long time,
Europeans think 100 miles is a long way.
pi_144799392
quote:
7s.gif Op maandag 22 september 2014 14:52 schreef Aether het volgende:

[..]

Je kunt readfile beter niet voor dit soort situaties gebruiken. De gehele file wordt namelijk ingeladen en daarna pas verzonden. Je zult waarschijnlijk al eerder een ‘out of memory’ krijgen.

Een betere oplossing is om het bestand in kleinere blokken te lezen en deze te verzenden: (niet getest)
[ code verwijderd ]

http://php.net/manual/en/function.readfile.php
quote:
readfile() will not present any memory issues, even when sending large files, on its own. If you encounter an out of memory error ensure that output buffering is off with ob_get_level().
Dit is denk ik een betere optie:
http://stackoverflow.com/(...)rve-a-file-using-php
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 23 september 2014 @ 09:53:40 #22
8130 raptorix
THAI CHARACTER MAITAIKHU
pi_144814841
quote:
0s.gif Op zondag 21 september 2014 12:37 schreef Monolith het volgende:

[..]

Dat is allemaal erg marginaal. Natuurlijk, als je elke keer instances moet gaan maken in je code om een of andere utility method aan te roepen, dan is dat niet heel efficiŽnt, maar dat zijn niet de zaken die doorgaans geheugenproblemen veroorzaken.
True, maar het is meestal ook best practice qua onderhoudbaarheid, met name voor collega developers die niet altijd even bekend zijn met een code base.
pi_144814978
quote:
0s.gif Op dinsdag 23 september 2014 09:53 schreef raptorix het volgende:

[..]

True, maar het is meestal ook best practice qua onderhoudbaarheid, met name voor collega developers die niet altijd even bekend zijn met een code base.
Juist om wat ik al eerder aangaf. Als je static calls gaat doen naar non-static methods dan 'mag' dat in PHP. Bizarre implementatiebeslissing, maar daar staan de PHP devs wel bekend om. :P
Wat je dan inderdaad gaat krijgen is dat je wellicht in je project op bepaalde plekken static calls doet naar een method die niet als static is gedeclareerd. Vervolgens moet een andere developer de oorspronkelijke class aanpassen en doet dat door een instance variabele te gebruiken in die methode of een call naar een andere non-static method.

Dat lijkt wellicht allemaal niet zo erg bij kleinschalige projectjes waar mensen individueel aan werken, maar bij grotere projecten wordt dat een enorm probleem. Zeker omdat PHP voor dit soort dingen ook geen compile time errors / warnings heeft. Het wordt immers niet gecompiled. Dus dan moet je maar hopen dat dit soort zaken heel erg goed zijn afgevangen met unit tests.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
  dinsdag 23 september 2014 @ 11:10:50 #24
12221 Tijn
Powered by MS Paint
pi_144816597
quote:
0s.gif Op dinsdag 23 september 2014 10:00 schreef Monolith het volgende:

[..]

Juist om wat ik al eerder aangaf. Als je static calls gaat doen naar non-static methods dan 'mag' dat in PHP.
Die warnings stuurt PHP niet voor niks, he.
pi_144817992
quote:
2s.gif Op dinsdag 23 september 2014 11:10 schreef Tijn het volgende:

[..]

Die warnings stuurt PHP niet voor niks, he.
Dat weet ik, maar het zou Łberhaupt niet toegestaan mogen zijn. Het zou moeten resulteren in een fatal error.
Nu werkt het nog ook, zolang je geen non-static handelingen uitvoert in de methode. Dat is vragen om toekomstige bugs.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
  dinsdag 23 september 2014 @ 12:00:21 #26
12221 Tijn
Powered by MS Paint
pi_144818136
quote:
0s.gif Op dinsdag 23 september 2014 11:54 schreef Monolith het volgende:

[..]

Dat weet ik, maar het zou Łberhaupt niet toegestaan mogen zijn. Het zou moeten resulteren in een fatal error.
Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
pi_144818722
quote:
2s.gif Op dinsdag 23 september 2014 12:00 schreef Tijn het volgende:

[..]

Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
Pech. Dat is meer werk voor ons. :7
pi_144818726
quote:
2s.gif Op dinsdag 23 september 2014 12:00 schreef Tijn het volgende:

[..]

Mja, het probleem is dan (zoals zo vaak met PHP) dat een hoop oude applicaties instorten :+
Ja ik weet dat backwards compatibility de reden is, maar je moet ook ergens een keer een streep trekken. Het probleem is natuurlijk dat ze het OO aspect van de taal later hebben geÔntroduceerd en pas redelijk volledig vanaf PHP 5. PHP 4 is weliswaar 'OO', maar miste nog basale zaken als access modifiers.
Daarbij is backwards compatibility wel leuk, maar bij enige doorontwikkeling loop je weer tegen de issues aan die ik eerder al beschreeft. Het enige nut van die backwards compatibility is dus eigenlijk het neerzetten van een applicatie die je nooit meer wilt aanraken.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
pi_144820728
Het zou wat mij betreft helemaal niet gek zijn als ze eens flink gaan snijden/refactoren in de functienamen. Alles wat je weg wilt gooien gewoon per direct deprecaten en over 1 of 2 versies weggooien. Eventueel de laatste versie vůůr de grote schoonmaak LTS maken voor de compatibility.
pi_144825612
quote:
14s.gif Op dinsdag 23 september 2014 13:28 schreef KomtTijd... het volgende:
Het zou wat mij betreft helemaal niet gek zijn als ze eens flink gaan snijden/refactoren in de functienamen. Alles wat je weg wilt gooien gewoon per direct deprecaten en over 1 of 2 versies weggooien. Eventueel de laatste versie vůůr de grote schoonmaak LTS maken voor de compatibility.
Wat dat betreft was PHP Reboot wel een aardig initiatief. Jammer dat het nooit is doorgezet.
“I did not mean that Conservatives are generally stupid; I meant, that stupid persons are generally Conservative. I believe that to be so obvious and undeniable a fact that I hardly think any hon. Gentleman will question it.“
abonnementen ibood.com bol.com Gearbest
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')