login  Naam:   Wachtwoord: 
Registreer je!
 Forum

$this waardes aanspreken vanuit een andere klasse.

Offline Codestar - 30/07/2007 15:45 (laatste wijziging 30/07/2007 15:46)
Avatar van CodestarNieuw lid Ik heb een paar properties deze staan in een private function.

(class.navigation.php)

  1. $this->navLimit = $limitAPage;
  2. $thisPage = (isset($_GET['page']) && is_numeric($_GET['page']))?$_GET['page']:1;
  3. $this->navStart = $this->_startLimit($thisPage, $limitAPage);
  4. $numPages = $this->_numpages($query, $limitAPage);



Nu wil ik in class.blog.php 2 waarde ophalen, je weet vast wel hoe dat werkt met een navigatie. Je hebt de $this->navStart en $this->navLimit nodig om in de LIMIT te zetten van de query zodat de query gegevens kan ophalen bij die bepaalde pagina (/page=2).

Wat is de gemakkelijkste manier om die variabelen uit de andere klasse aan te spreken?

classeNaam::CONSTAND; werkt niet.

Het volgende staat op de PHP site:

  1. <?php
  2. class MyClass
  3. {
  4. const constant = 'constant value';


Maar zodra ik de waarde van const constand variabel maak met $this->navStart; Krijg ik een syntax error.

Nu weet ik wel dat je vanuit een klasse een andere klasse kan require-en + opnieuw een instansie maken. En die dan een $this instantie eroverheen gooien. Maar omdat ik dat zo omslachtig vind heb ik dit onderwerp aangemaakt.

Ik hoop dat iemand me ermee kan helpen!

6 antwoorden

Gesponsorde links
Offline Stijn - 30/07/2007 15:53
Avatar van Stijn PHP expert maak een functie in class.blog.php
  1. public function setNavigation( Navigation $nav )
  2. {
  3. $this->_nav = $nav;
  4. }
Dan kan je in je class.blog.php $this->_nav->navStart; gebruiken.

In een voorbeeld is dit dan:
  1. $nav = new Navigation(...);
  2. $blog = new Blog(...);
  3. $blog->setNavigation( &$nav );
Offline Codestar - 30/07/2007 15:57
Avatar van Codestar Nieuw lid Maar dan moet ik dus alsnog een instansie aanmaken van de klasse Blog vanuit de navigatie klasse. 
Offline Stijn - 30/07/2007 16:01
Avatar van Stijn PHP expert Nee, je maakt dus een instantie van Navigation class. Daarna maak je een instantie van Blog class en dan gewoon mijn functie. Je maakt hem niet opnieuw aan hoor.
Offline Codestar - 30/07/2007 16:07
Avatar van Codestar Nieuw lid Dan moet ik weer de $tpl en $db parameters meegeven. En daarvoor moet ik ze dus eerst weer aanroepen in de navigatie klasse. En dan heb je een hoop omwegen terwijl ik alleen maar 2 waardes nodig heb. Het moet toch eenvoudiger kunnen?

Lastig ben ik hea Nou iig, al bedankt.
Offline marten - 30/07/2007 18:10
Avatar van marten Beheerder Je kan je eigen private class extenden op de hoofd class. Zorg dat je properties dan geen private zijn maar bijvoorbeeld protected of public. Zo worden de properties overerft vanuit de hoofd class en kan je in je (sub) class ze normaal aanroepen.
Offline ikkedikke - 30/07/2007 18:46 (laatste wijziging 30/07/2007 18:47)
Avatar van ikkedikke PHP expert Er bestaat een manier om een klasse een instantie van zichzelf op te laten slaan. Het had iets met static functies te doen.
op die manier kan je met Navigatieklasse:: staticfunctie() een instantie van Navigatieklasse krijgen. Vervolgens maak je een public functie die de waarden van de private properties terug geeft.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.201s