PDA

Bekijk Volledige Versie : PHP5 warning



FransVanNispen
11/05/05, 15:46
Weet iemand hoe ik de volgende waarschuwing in PHP5.0.3 kan uitschakelen?

: var: Deprecated. Please use the public/private/protected modifiers in ....

Deze melding krijg ik omdat ik in een class een variable heb gedeclareerd als 'var $theme'

PHP5 vindt dat dit 'public $theme' moet zijn, maar blijft wel werken.
Aangezien ik alle foutmeldingen afvang en naar een database schrijf, wordt mijn log overspoeld met deze melding.

BlueMoonIT
11/05/05, 16:10
Het gebruik van classes is in PHP 5 iets veranderd en daarmee wordt het gebruik van public/private/protected t.o.v. var aanbevolen. Om dit soort warnings te voorkomen kun je gewoon een lagere error_reporting() instellen.

FransVanNispen
11/05/05, 16:17
Het error level van deze melding is 1. Lager zal dus niet gaan.

PowerSp00n
11/05/05, 16:34
Er bestaat ook nog zoiets als 0. Iets wat toch wel actief hoort te zijn zodra je apps live gaan.

SebastiaanStok
12/05/05, 14:04
Die melding komt door E_STRICT

error_reporting(E_ALL | E_STRICT);

Nooit E_ALL onderdrukken, als iets fout weet je niet warom!

PowerSp00n
12/05/05, 20:30
Origineel geplaatst door Rollerscapes
Die melding komt door E_STRICT

error_reporting(E_ALL | E_STRICT);

Nooit E_ALL onderdrukken, als iets fout weet je niet warom!

Ook E_STRICT niet onderdrukken tijdens development. Anders weet je dus niet dat het eigenlijk anders hoort. Als het in productie draait alle error reporting uit. Gebruikers hoeven nou eenmaal niet de details te weten van wat er fout gaat.

Ic3man
12/05/05, 20:47
In plaats van waarschuwingen uit te schakelen zou je natuurlijk ook kunnen proberen de code in PHP5 te schrijven als je toch besloten hebt om het te gaan gebruiken.

Flydesign.nl
14/05/05, 10:18
"Om dit soort warnings te voorkomen kun je gewoon een lagere error_reporting() instellen."
Dat dus nooit doen. Het zou wat zijn als je als programmeur voor elke fout die je krijgt, je error reporting lager te zetten en daarmee dus de error te verhelpen.

Zoals gezegd heeft PHP5 een nieuwe OOP structuur. Hierin bestaat het keyword var niet meer:



<?
class iets {
var $ietsanders;
}
?>


Dit was altijd goed, maar in PHP5 is het de bedoeling dat je daar een bepaalde visibility neerzet:



<?
class iets {
private $ietsanders;
}
?>


De visibility geeft aan in welke mate de variabele te gebruiken is binnen en buiten de klasse:

- private: de variabele mag alleen maar binnen de klasse gebruikt worden
- public: iedereen mag de variabele gebruiken
- protected: de variabele is private maar ook toegankelijk vanaf subklassen die de klasse extenden.

In de meeste gevallen is het het beste om private te gebruiken. Je kunt dus gewoon in de bestanden die een fout geven even een find and replace doen en daarbij elk voorkomen van var vervangen door private.

SebastiaanStok
14/05/05, 11:30
Het probleem is, dat somige dingen gewoon niet door jou zelf zijn gemaakt, en dat het soms onmogelijk is dat weer allemaal te maken voor php5.

Of je ontwikelt projecten die ook nog met php4 moeten kunnen werken.

Zowie zo moet je NOOIT E_ALL onderdrukken.

E_STRICT is enkel als je echt 100% wild houden aan de standarts van php5.


Ik heb zelf een project Yeasy-Members welke nog steeds in php4 werkt, tot de volgenden versie dan word enkel nog voor php5.

Ik zefl dagelijks met php5, en wil om tenduur geen dingen meer maken voor php4.

[Offtopick]
He Edwin jij ook hier ;)
Hier ben ik dus buiten PFZ :)

FransVanNispen
16/05/05, 12:03
Ik ben C++ developer en programeer al jaren PHP4. De code is door mij zelf geschreven, maar het moet zowel op PHP5 als op PHP4 draaien.

Geen van bovenstaande opties heeft tot nu toe tot een oplossing geleid.
Ik doe nu tijdelijk een tekst scan op 'Depreciated', en sla deze melding niet langer op.

Maar dat is uiteindelijk niet de bedoeling.

SebastiaanStok
16/05/05, 13:25
<?php
if(version_compare(phpversion(), '5.0.0', '>') == 1)
{
error_reporting(E_ALL | E_STRICT);
} else {
error_reporting(E_ALL);
}
?>