Hallo phpers,

ik loop hier tegen een probleempje aan.


public function logError($p_sLogline, $p_bForceLog = true, $p_sLogfile = $this->m_sLogfile, $p_sLoglocation = $this->m_sLoglocation) {


dit geeft mij een Parse error. Ik weet dat het komt door de

$p_sLogfile = $this->m_sLogfile, $p_sLoglocation = $this->m_sLoglocation. 


Want

$p_sLogfile = '', $p_sLoglocation = '') { 

werkt wel.

Waarschijnlijk is het omdat PHP variable niet toestaat om meegegeven te worden aan parameters? klopt dit, of is er iets anders aan de hand?

(volledige code: http://pastebin.com/mb2cd341
In de functie kijken of de parameter is geset, anders een standaart waarde zetten.
Karl. De parameter is geset.
Als ik het volgende toevoeg. Direct na de functie

if ($p_sLogfile == '') { $p_sLogfile = $this->m_sLogfile; }
if ($p_sLoglocation == '') { $p_sLogLocation = $this->m_sLoglocation; }


Worden beide netjes gevult. (mits in de functie aanroep de vars niet specifiek geset worden)
Dat moet je ook zo doen. Een $this in je parameters kan niet. PHP parset namelijk eerst de method voordat ie het überhaupt gaat uitvoeren. Bij het parsen kijkt ie dan of er een constante waarde is toegekend, waarbij een $this dus niet kan, want die is niet constant.

Je moet dus gewoon de if-constructie gebruiken en in je parameters alleen maar met constante waardes werken.
Dat is wat ik bedoelde met

Waarschijnlijk is het omdat PHP variable niet toestaat om meegegeven te worden aan parameters? klopt dit, of is er iets anders aan de hand?

Thanks a lot :)
PHPerik schreef op 11.05.2009 17:38
Dat moet je ook zo doen. Een $this in je parameters kan niet. PHP parset namelijk eerst de method voordat ie het überhaupt gaat uitvoeren. Bij het parsen kijkt ie dan of er een constante waarde is toegekend, waarbij een $this dus niet kan, want die is niet constant.

Je moet dus gewoon de if-constructie gebruiken en in je parameters alleen maar met constante waardes werken.

Dit bedoelde ik dus ook, alleen dan zonder uitgebreide uitleg.

Reageren