Versio

ob_start()

Overzicht Reageren

Nils Kuijpers

Nils Kuijpers

31/10/2008 09:54:00
Quote Anchor link
Hey,

ob_start(), wat doet dat nou precies? Ik heb de hele php.net specificatielijst doorgelezen maar nog steeds kom ik er niet wijs uit. Voor zover ik begrepen heb start dit een buffer, er wordt dus nog niets naar de browser gestuurd, totdat je ob_end_start() aanroept. Dit zou handig moeten zijn zodat je gewoon mid file headers kunt zetten, zolang je nog maar niets ge'echo't hebt. Ik ben er echter een beetje mee gaan experimenteren, maar ik krijg het niet werkend.

Waar plaats ik precies het ob_start() commando, en waar de end_flush()? Als ik bijvoorbeeld ob_start() bovenaan het bestand zet en ik doe vervolgens echo "hoi"; dan echo't hij dat gewoon.

Wat zie ik over het hoofd?
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
PHP hulp

PHP hulp

25/05/2012 12:29:37
Gesponsorde koppelingen:
 
Noppes

Noppes

31/10/2008 09:58:00
Quote Anchor link
Nee, ob_start start het bufferen, ob_flush is spoel maar door

en deze functies dien je links te laten liggen want in veel gevallen zijn er veel betere oplossingen hiervoor te bedenken.
 
Nils Kuijpers

Nils Kuijpers

31/10/2008 09:59:00
Quote Anchor link
sorry, ik bedoelde ook ob_start().
 
Robert Deiman

Robert Deiman

31/10/2008 10:13:00
Quote Anchor link
@Nils

Ob_start() is eigenlijk een soort van "lapmiddeltje" om het maar zo te noemen. Hij buffert alles en verwerkt dat in 1 keer op het punt dat je ob_end_flush gebruikt.

Wanneer je je code goed opbouwt, geen output voordat je headers gebruikt en set (dit geldt voor session_start(); setcookie() en alle header() functies.) heb je de hele mogelijkheid van de ob-functies helemaal niet nodig.
 
Jelle Posthuma

Jelle Posthuma

31/10/2008 10:31:00
Quote Anchor link
Robert_Deiman schreef op 31.10.2008 10:13:
@Nils

Ob_start() is eigenlijk een soort van "lapmiddeltje" om het maar zo te noemen. Hij buffert alles en verwerkt dat in 1 keer op het punt dat je ob_end_flush gebruikt.

Wanneer je je code goed opbouwt, geen output voordat je headers gebruikt en set (dit geldt voor session_start(); setcookie() en alle header() functies.) heb je de hele mogelijkheid van de ob-functies helemaal niet nodig.

En dan weet je dat je code fatsoenlijk in elkaar zit.
Zelfde geld voor @ gebruiken om fouten te maskeren...
Dat doe je alleen als je als amateur een fout niet wil oplossen en maar wilt verbergen.
Fouten los je op, daar ga je niet overheen verven.
 
Robert Deiman

Robert Deiman

31/10/2008 10:39:00
Quote Anchor link
In vakjargon noemen we dat dweilen met de kraan open ;)

Je verbergt alleen maar dingen die niet zo zijn als dat het zou moeten, net als dat je @-jes gebruikt voor functies (verbergt ook fouten) en als dat je error_reporting uit hebt staan.

Het is "kiezen voor de weg met de minste weerstand", om code goed op te bouwen heb je nu eenmaal meer denk / programmeerwerk nodig, maar dan weet je wel zeker dat het goed is, omdat je helemaal geen meldingen van 't één of ander krijgt.
 
Theo Hubenet

Theo Hubenet

01/04/2012 00:23:28
Quote Anchor link
Waar gehakt wordt, vallen spaanders. De users hoeven de foutmeldingen niet te zien, als je ze zelf maar wel goed afvangt en verwerkt.

FYI: De ob_start en flush en je weet wat ik bedoel kan weldegelijk handig zijn als je de output van een include aan een variabele wil toewijzen om in een template weer te geven.
 
Jordi kroon
Redacteur

jordi kroon

01/04/2012 00:29:09
Quote Anchor link
Je weet dat je nu een topic van 4 jaar geleden aan het bumpen bent.
 



Overzicht Reageren

Get Adobe Flash player