login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2 classes

Offline lasdesigner - 17/12/2006 19:50
Avatar van lasdesignerPHP beginner Alweer een vraagje over OO (waar ik met PHP5 nooit last van heb :S).. Ik ben dus bezig met PHP 4 een script te schrijven en om jullie te laten zien wat ik bedoel heb ik het volgende (onnuttige) scriptje getypt:

  1. <?php
  2. class Test {
  3. function A() {
  4. return "a";
  5. }
  6. }
  7.  
  8. $a = new Test;
  9.  
  10. class Test2 {
  11. function B() {
  12. // $a = new Test; met deze doet die het wel, zonder niet
  13. echo $a->A();
  14. }
  15. }
  16.  
  17. $ab = new Test2;
  18. $ab->B();
  19. ?>


Hoe kan het nou dat die die variabele $a niet pakt?

9 antwoorden

Gesponsorde links
Offline timmie_loots - 17/12/2006 19:58
Avatar van timmie_loots PHP gevorderde $a wordt gezet in de global scope, de functie B heeft zijn eigen scope en 'ziet' $a dus niet. Oh trouwens, dit werkt ook niet in PHP5 hoor.
Offline Voldemort - 17/12/2006 19:59
Avatar van Voldemort PHP ver gevorderde Je moet global gebruiken PHP.net: global

  1. function B() {
  2. // $a = new Test; met deze doet die het wel, zonder niet
  3. echo $a->A();
  4. }


==>

  1. function B() {
  2. global $a;
  3. // $a = new Test; met deze doet die het wel, zonder niet
  4. echo $a->A();
  5. }
Offline Stijn - 17/12/2006 20:28
Avatar van Stijn PHP expert niets te global , da's een domme aanpak!
dit is de goeie aanpak:
  1. <?php
  2. class Test {
  3. function A() {
  4. return "a";
  5. }
  6. }
  7.  
  8. $a = new Test;
  9.  
  10. class Test2 {
  11. function B( $object ) {
  12. // $a = new Test; met deze doet die het wel, zonder niet
  13. echo $object->A();
  14. }
  15. }
  16.  
  17. $ab = new Test2;
  18. $ab->B( $a );
  19. ?>
Offline lasdesigner - 17/12/2006 22:48
Avatar van lasdesigner PHP beginner Thx stijn, ik heb het nog niet kunnen testen maar het ziet er heel goed uit, bedankt 
Offline timmie_loots - 17/12/2006 22:52 (laatste wijziging 17/12/2006 22:58)
Avatar van timmie_loots PHP gevorderde Of zo:

  1. <?php
  2.  
  3. class Test {
  4. function A() {
  5. return "a";
  6. }
  7. }
  8.  
  9. class Test2 extends Test {
  10. function B() {
  11. return $this->A();
  12. }
  13. }
  14.  
  15. $ab = new Test2;
  16. $ab->B();
  17.  
  18. ?>
Offline Gerard - 18/12/2006 01:06
Avatar van Gerard Ouwe rakker Het gebruik van het feeden van een object of om een andere klasse te extenden kan heel situatie afhankelijk zijn. Keep that in mind 
Offline lasdesigner - 18/12/2006 13:58
Avatar van lasdesigner PHP beginner Ik denk idd niet dat extends bij mij een oplossing is. Omdat ik classes in verschillende pagina's heb.. En ook omdat ik een Database class boven een 'gewone'(login) classe zet.
Offline timmie_loots - 18/12/2006 21:41
Avatar van timmie_loots PHP gevorderde @Proximus: True, maar op deze manier kan het toch 

@Lasdesigner: Een login klasse? Je snapt het nut van classes niet helemaal zeker?
Offline Stijn - 18/12/2006 21:46
Avatar van Stijn PHP expert als je onafhankelijke classes wilt gebruiken raad ik je aan om een core class te maken die andere classes laad. zoals in mijn script (zie hierboven)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.246s