Goeden middag,

Ik heb gisteren de nieuwe versie van Wamp gedownload, en daarbij dus ook - PHP 5.2.8, echter nu krijg ik ineens in mijn code allemaal foutmeldingen van variabelen die niet gedeclareerd zijn. Is dit nieuw in php? En is het mogelijk om dit uit te schakelen?
Want ik vondt het altijd een groot voordeel van PHP dat dit niet hoefde.

Bij voorbaat dank,
En welke foutmeldingen zijn dat?
Superglobals? Sessies?

Error_reporting(0) werkt ook.
Foutmelding

Notice: Undefined variable: pagina in index.php on line 25


Maar ik wil wel dat er foutmeldingen gegeven worden wanneer er ook daadwerkelijk een fout is, maar dit was eerder nooit een fout in php.
Het heeft waarschijnlijk niks met de php versie te maken maar met je instellingen in php.ini En dan wel zoals Eddy Erkelens al zegt, met de error_reporting instellingen. Om die op 0 te zetten lijkt mij erg drastisch en onnodig. Je zou de notices uit kunnen zetten, maar het beste lijkt mij om je scripts aan te passen. Als je op deze manier door blijft gaan kan je namelijk wel eens tegen onverwachtse resultaten of lastige bugs aanlopen.
Nouja, dan ga ik dat maar even doen. Gaat veel werk worden, maar het moet maar:(
Aron schreef op 21.12.2008 13:40
nu krijg ik ineens in mijn code allemaal foutmeldingen van variabelen die niet gedeclareerd zijn.
Jouw code is dus vrij brak.

Is dit nieuw in php?
Nee, bestaat al járen.

En is het mogelijk om dit uit te schakelen?
Ja, kwestie van je kop in het zand steken... Of display_errors op 0 zetten. Zorg er wel voor dat je alle fouten (want dat zijn het!) naar een logboek wegschrijft.

Want ik vondt het altijd een groot voordeel van PHP dat dit niet hoefde.
Lijkt heel handig, totdat je moet debuggen...
Ik gebruikte het vooral om ingevulde velden ingevuld te houden, dus gewoon als value meegeven, $_POST['veld']; daar komen nu dus de foutmeldingen.
Vervangen door een if-je, vooral de verkorte if notatie kan handig zijn.
empty($_POST['foo']) ? '' : $_POST['foo'];

De lange notatie mag natuurlijk ook, zeker als je code er anders onoverzichtelijk van wordt, wat dat is nog lastiger te debuggen.
Daar was ik er inderdaat al meerdere van aan het maken de afgelopen minuten.

Nu heb ik alleen het probleem met checkboxes, eerst deed ik altijd:

<?php
echo $_POST['box'] ? 'checked' : '';
?>


Heeft iemand daar misschien een makkelijke oplossing voor?

edit:

al opgelost met:

<?php
echo !empty($_POST['box']) && $_POST['box'] ? 'checked' : '';
?>

Reageren