[php] oop vraagje

Pagina: 1
Acties:

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Weten jullie misschien waarom het volgende niet werkt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
class test {
  var $a;

  function test () {
    // dit werkt dus niet    
  }

  function testb ($this->a) {
    // dit werkt dus niet    
  }
}
?>

Hij zegt: Parse error: parse error, expecting `')'' in i:\webserver\pages\test\test.php on line 9 ( function testb ($this->a) {)

Het ligt niet aan het feit dat het geen contructor is, want ik heb al geprobeerd in de functie 'test' maar dat hielp ook niet.

  • johnny7
  • Registratie: November 2000
  • Laatst online: 07-11-2023
Je kunt een functie toch niet declareren met een instantie als parameter. Ik bedoel dus dat je hier niet this->a kunt gebruiken.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

psies :)

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
In mijn boek 'prof php programming' staat op blz 177 toch echt:
function cart($this->seshid, $this->userid=0) {
en dat is de contructor

Verwijderd

Je function heeft dezelfde variable als je class (allebei test en dat kan niet)

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

dat is het idee van een constructor, dat ie de naam van je klasse heeft :P

Maar wat is het idee van $this->a gebruiken in de definitie van een methode? Wat wil je daar mee bereiken?

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Op vrijdag 21 september 2001 10:36 schreef Zoijar het volgende:
dat is het idee van een constructor, dat ie de naam van je klasse heeft :P

Maar wat is het idee van $this->a gebruiken in de definitie van een methode? Wat wil je daar mee bereiken?
Het hoeft ook niet echt, maar ik eerst deed ik het met een array, testen of het kon. dus:
PHP:
1
2
3
<?
function($server[username], $server[psw])
?>

Dit werkte niet (zelfde probleem), dus probeerde ik $this->a maar dat werkte ook niet.
Ik wilde eigenlijk weten waarom, maar ik kon het niet vinden, dus vroeg ik het. Want (kan een foutje zijn natuurlijk) in het boek staat het wel zo ($this->a).

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

php kent geen types (min of meer hehe, vaag taaltje). Als je een array wilt, doe je ook gewoon function($a) en dan hoop je dat het echt een array is. Of je moet nog een is_array($a) check doen, dat kan wel.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
class test
{
  var $a;
  function test($b="test2")
  {
    $this->a=$b;
  }

  function get_a()
  {
    return $this->a; 
  }

  function set_a($b)
  {
    $this->a=$b;
  }

}

$test=new test("hello");
echo $test->get_a();
$test->set_a(" world");
echo $test->get_a();
?>

Dit script geeft als output "hello world".
Zo zou in principe een class moeten worden opgebouwd in PHP.

edit:

Opmaak aan text

Programmer - an organism that turns coffee into software.


  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Op vrijdag 21 september 2001 10:47 schreef LuCarD het volgende:
PHP:
1
2
3
<?
boel code
?>

Dit script geeft als output "hello world".
Zo zou in principe een class moeten worden opgebouwd in PHP.

edit:

Opmaak aan text
Ja dat werkt ook wel :)

Maar "function piet ($this->var)" werkt niet, dat is juist het 'probleem/vraag'

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

waarom zou het wel werken joost? Wat zou er moeten gebeuren? Wat is het nut?

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Ik wilde gewoon weten waarom het niet werkte, omdat het wel in het boek staat, dat zal wel gewoon een foutje zijn dan :?.

Maar het antwoord is dus:
Je kunt een functie toch niet declareren met een instantie als parameter.
Bedankt!

Verwijderd

Sorry was niet wakker en wat jij zegt is volgens mij niet voor de volle 100% waar want het moet echter mogelijk zijn om gegevens te defineren aan een array of object... ik ben er ff naar aan het kijken zo volgt er wel edit, hmm check de manual is bij functions onderaan en daar staat verwijzing naar variablen het is niet mogelijk om een instantie cq verzameling variablen (op)nieuw te defineren in een functie, zoals in C wel kan...
Pagina: 1