login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Object in andere klasse gebruiken (Opgelost)

Offline Abbas - 15/03/2010 15:00
Avatar van AbbasGouden medaille

Crew .NET
Ik heb een eigen klasse en die wil ik gebruiken in een andere klasse maar het lukt me blijkbaar niet helemaal. De eerste klasse heet bvb. A en heeft een default constructor en een aantal methodes. Die wil ik dan gebruiken in een klasse B. Ik doe nu:

  1. require_once "classA.php";
  2.  
  3. class B
  4. {
  5. private $a;
  6.  
  7. public function __construct()
  8. {
  9. $this->a = new A();
  10. }
  11.  
  12. public function foo()
  13. {
  14. $this->a->SomeClassAMethod();
  15. }
  16. }

Dit werkt niet. Ik kan niet "$this->a->..." doen en met "self::$a" werkt het ook niet. Blijkbaar zie ik iets over het hoofd. Hoe kan ik ervoor zorgen dat dit wel werkt?

3 antwoorden

Gesponsorde links
Offline Joost - 15/03/2010 15:05 (laatste wijziging 15/03/2010 15:06)
Avatar van Joost PHP expert
  1. <?php
  2.  
  3. class A {
  4.  
  5. public function bar(){
  6. echo 'Class A bar methode!';
  7. }
  8.  
  9. }
  10.  
  11. class B {
  12.  
  13. protected $a = null;
  14.  
  15. public function __construct(){
  16. $this->a = new A;
  17. }
  18.  
  19. public function foo(){
  20. $this->a->bar();
  21. }
  22.  
  23. }
  24.  
  25. $b = new B;
  26. $b->foo();

Dat werkt bij mij gewoon, geeft netjes "Class A bar methode!" weer.
Wat zie je als je even var_dump($this->a) in foo() zet?
Bedankt door: Abbas
Offline Tuinstoel - 15/03/2010 15:07
Avatar van Tuinstoel PHP expert Ik weet niet of dat wel wil een object in een object

Volgens mij moet $ding = new A(); wel werken ipv $this->a, want met $this-> geef je aan dat het een methode of attribuut uit de eigen klasse is?!

Maar waarom doe je niet extend? Je kunt ook altijd nog A::SomeClassAMethod() doen.
Offline Abbas - 15/03/2010 18:04
Avatar van Abbas Gouden medaille

Crew .NET
Extenden is geen optie. De oplossing van Joost was perfect! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.196s