Archief - PHP : constructor functie arg default value

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

GizeH

Legacy Member
PHP:
<?php
Class FileMan
{
	var $files = array();
	var $base_dir;
	
	function FileMan($base_dir = $_SERVER['DOCUMENT_ROOT'])
	{
		$this->base_dir = $base_dir;
		echo $this->base_dir;
	}
}
?>

Ik krijg een error op ' function FileMan($base_dir = $_SERVER['DOCUMENT_ROOT'])' -->
Parse error: parse error, unexpected T_VARIABLE in c:\php\docroot\gamercc\lib\fileman.php on line 7

Als ik function FileMan($base_dir = 'test') doe werkt het wel

Waarom werkt het niet met document root?

servi

Legacy Member
moderator noot :
je topic bevat geen prefix, een verkeerd prefix of heeft een onduidelijke titel.
Gelieve een duidelijke titel met een bijhorend correct prefix te gebruiken.
Voor meer informatie over prefixen kan je terecht op regels en prefixen !!!.
Je topic is aangepast, gelieve in het vervolg er op te letten.


laatste keer dat ik nog een thread van je wijzig zonder een waarschuwing te geven ...


met globals krijg je die problemen altijd

ik gebruik als oplossing :

function FileMan($base_dir='') {
if ( empty($base_dir) )
$base_dir = $_SERVER['DOCUMENT_ROOT'];
...

killgore

Legacy Member
da heeft bij mijn weten niets met globals te maken, dat heeft gewoon te maken dat je een variabele er aan toekent :p.

Zeg nu zelf, zoiets is toch gewoon niet logisch:?

PHP:
function($parvar = $eenanderevar){}

btw: buiten de server vars valt er imho wat meer te doen met de constante __FILE__ ;).

PerfectPC

Legacy Member
zoals killgore aanhaalt is het nutteloos wat je doet :p
doe maar zo:
PHP:
<?php 
	Class FileMan {
			var $files = array();
			 
			// function __construct() // als je PHP5 gebruikt
			function FileMan() // als je PHP3/4 gebruikt
			{
					$this->base_dir = $_SERVER['DOCUMENT_ROOT'];
					echo $this->base_dir;
			}
	}
?>

killgore

Legacy Member
PerfectPC zei:
zoals killgore aanhaalt is het nutteloos wat je doet :p
doe maar zo:
PHP:
<?php 
	Class FileMan {
			var $files = array();
			 
			// function __construct() // als je PHP5 gebruikt
			function FileMan() // als je PHP3/4 gebruikt
			{
					$this->base_dir = $_SERVER['DOCUMENT_ROOT'];
					echo $this->base_dir;
			}
	}
?>

das ook niet wat hij wilt he ;).
Servi zen methode komt nog het dichtst in de buurt :), ik zou enkel = NULL gebruiken en met __FILE__ werken ;), ma das toch +/- allemaal tzelfde.

GizeH

Legacy Member
mijn manier was nochtans iets die ik gezien had op php.net ... :eek:

killgore

Legacy Member
GizeH zei:
mijn manier was nochtans iets die ik gezien had op php.net ... :eek:
reporten, is slechte code, variabelen meegeven als default waarde is gewoon dikke zever. Het enige dat hierin nog kan zijn constanten.

servi

Legacy Member
mja kwestie van interpretatie natuurlijk, ik beschouw alles van $_SERVER ( die ook volgens conventie van constanten namen krijgen) als pagina-constanten.

de nettere oplossing zou dan wel zijn

define('DOCUMENT_ROOT',$_SERVER['DOCUMENT_ROOT']);

en dan in die functie :

function FileMan($base_dir = DOCUMENT_ROOT)

maar dat vind ik dan ook een beetje gek :)

killgore

Legacy Member
servi zei:
mja kwestie van interpretatie natuurlijk, ik beschouw alles van $_SERVER ( die ook volgens conventie van constanten namen krijgen) als pagina-constanten.

de nettere oplossing zou dan wel zijn

define('DOCUMENT_ROOT',$_SERVER['DOCUMENT_ROOT']);

en dan in die functie :

function FileMan($base_dir = DOCUMENT_ROOT)

maar dat vind ik dan ook een beetje gek :)

gek niet nee

kijk, je beschouwt het wel zo, maar het zijn nu eenmaal geen constanten, je kan perfect $_SERVER["DOCUMENT_ROOT"] = "dikkebullshit"; uitvoeren :).
Jij declareert nu een constante met de huidige variabele waarde, die constante kan gewoon NIET veranderen (itt $_SERVER vars) in de rest van het script (tenzij je de constante verwijdert en opnieuw aanmaakt).

servi

Legacy Member
mja naam-conventie van mij, alles met HOOFDLETTERS zijn constanten bij mij.

uit gewoonte zal ik dus al nooit een $_SERVER-var proberen te veranderen.

Nou ja ik vind het vreemd, in feite zijn het immers constanten die uw script helpen en zouden ze misschien beter SERVER[VARNAAM] noemen ofzo, misschien een overblijfsel van toen er nog geen define bestond.

PS : nog bizzarer is het feit dat ge constanten kunt verwijderen :)

killgore

Legacy Member
kvind da verwijderen niet zo immens bizar, als je bedenkt dat een constante voor alle ge-include pagina's blijft. Sommige constanten wil je immers naargelang het script wijzigen he :).
Dat die server vars variabel zijn snap ik persoonlijk ook langs geen kanten, of toch het feit dat er geen constante alternatieven bestaan.

Maar zoals ik zei, hier is er wel een alternatief : __FILE__, just use that one :p (met dirname erop dan)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan