Archief - PHP: array in een class

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.

tikketim

Legacy Member
Hoe komt dat dat het volgende simpele scriptje niet werkt in een class terwijl het perfect werkt buiten een class ?

PHP:
$dag = array(
          0=>'Sunday',
          1=>'Monday',
          2=>'Tuesday',
          3=>'Wednesday',
          4=>'Thursday' ,
          5=>'Friday' ,
          6=>'Saturday' 
            );
 
 echo $dag[2];
 }

Ik krijg steeds de volgende error :
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION

Ik heb gelezen dat deze vaak voorkomt omdat je nog met php 4 werkt maar ik heb nochtans 5.2.5 .

Twilkie

Legacy Member
Ik gok dat je variable buiten de scope ligt. Maar zoals oneliner zegt post heel je class.

Cyberkef

Legacy Member
Wilde gok aangezien je niet alles post, maar zet je die $dag = array(...); buiten een methode?

Ik Vermoed dat dat wel niet gaat werken -> buiten methode enkel klassevariabelen zetten...

$this->dag = array(...);
$this->dag[2];

... werkt mss wel :unsure:

Rvl

Legacy Member
Cyberkef zei:
Wilde gok aangezien je niet alles post, maar zet je die $dag = array(...); buiten een methode?

Ik Vermoed dat dat wel niet gaat werken -> buiten methode enkel klassevariabelen zetten...

$this->dag = array(...);
$this->dag[2];

... werkt mss wel :unsure:
je roept class vars & methods op via $this-> maar je mag ze gewoon zonder $this-> definieren hoor dus

class A {
public $bar = 'bar';

public function getBar() {
return $this->bar;
}
}

Rvl

Legacy Member
idd, geef heel u code maar anders moeten we gewoon speculeren over hoe je code is opgebouwd. BTW: in u bovenstaande code staat er wel nog een zwevende "}" die nergens thuishoord.

Bram

Legacy Member
Rvl zei:
idd, geef heel u code maar anders moeten we gewoon speculeren over hoe je code is opgebouwd. BTW: in u bovenstaande code staat er wel nog een zwevende "}" die nergens thuishoord.

*slap*

:p

Volgens mij zal het idd een scope probleem zijn...

Variabelen declaren in een class gebeurt boven uw methods ala
PHP:
class foobar {
var $foo = 'bar';
var $blah = array();
// of
public $foo = 'bar';
private $blah = array();

public function getblah() {
return $this->blah;
}
}
als ge nu in uw pagina zet
PHP:
$class = new foobar();
echo $class->foo; //dit zal altijd werken aangezien foo in het tweede geval als public wordt beschouwd.
echo $class->blah; //werkt enkel in het eerste geval, aangezien in het tweede blah als private staat
echo $class->getblah(); // werkt altijd.

SMa

Legacy Member
er stond ook geen aanduiding voor je array,
zoals var of private

en zomaar met echo's gooien binnen een class gaat ook niet,
alle functionaliteit moet binnen methodes

killgore

Legacy Member
SMa zei:
er stond ook geen aanduiding voor je array,
zoals var of private

en zomaar met echo's gooien binnen een class gaat ook niet,
alle functionaliteit moet binnen methodes

voor hetzelfde geld zit die code wel degelijk binnen een methode :). Hou aub op met speculeren tot volledige code hier staat.

(dit terzijde: ik denk hetzelfde als u :p).

tikketim

Legacy Member
Ik heb het opgelost gekregen :

PHP:
<?php
class foobar { 
var $foo = 'bar'; 
var $dag = array(
	 								0=>'Sunday',
	 								1=>'Monday',
	 								2=>'Tuesday',
	 								3=>'Wednesday',
	 								4=>'Thursday' ,
	 								5=>'Friday' ,
	 								6=>'Saturday' 
	 							   ); 


public function getblah() { 
return $this->dag[1]; 
} 
} 

class foobar2 { 
var $foo = "bar"; 
var $dag = array(
	 								0=>'Sunday',
	 								1=>'Monday',
	 								2=>'Tuesday',
	 								3=>'Wednesday',
	 								4=>'Thursday' ,
	 								5=>'Friday' ,
	 								6=>'Saturday' 
	 							   ); 


public function getblah() { 
return $this->foo; 
} 
}

$class = new foobar();
echo $class->getblah();	

$class = new foobar2();
echo $class->getblah();	


?>

Wat ik deed was (denk ik) het volgende :
PHP:
return $this->$foo;
return $this->$dag[1];

Ik weet het niet zeker meer omdat ik bij het proberen het script te veel heb veranderd.

Rvl

Legacy Member
het is "return $this->foo" en "return $this->dag[1]" , geen $ meer bij je class var zetten.
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