2010-01-06 7 views
0

J'ai des difficultés à accéder à une variable de classe.Question d'accès aux variables de la classe PHP

J'ai les fonctions ci-dessous dans la classe.

class Profile { 

    var $Heading; 

    // ... 

    function setPageTitle($title) 
    { 
     $this->Heading = $title; 
     echo 'S: ' . $this->Heading; 
    } 

    function getPageTitle2() 
    {  
     echo 'G: ' . $this->Heading; 
     return $this->Heading; 
    } 

// ... 
} 

Maintenant, quand je lance la méthode $this->setPageTitle("test") je ne reçois que

G: S: test

Quel est le problème avec la fonction getPageTitle2? Titre est public btw. S'il vous plaît aider!

Merci les gars!

+0

S'il vous plaît fournir le code qui appelle les méthodes. –

+0

le code entier est situé à www.fearghal.com/Untitled-1.phps les noms de fonction sont SetContent() et getPageContents() ... ils ont appelé les fonctions est des questions. – Fearghal

Répondre

0

vous devez déclarer le titre et le titre de la fonction ... je ne sais pas si vous avez déjà fait ça

voir l'ordre d'appeler les fonctions

+0

oui, ma classe commence comme: classe Profil { var $ Titre; mais est-ce que $ title doit aussi bien être alimenté directement dans la fonction? – Fearghal

+0

pas sa variable – antpaw

1

Si vous avez « G: S: test " cela signifie que vous avez appelé getPageTitle2 avant setPageTitle! Il semble normal alors: Je suggère d'abord mettre puis obtenir.

4

Maintenant, quand je lance la méthode $this->setPageTitle("test") je reçois seulement

G: S: test

Cela semble peu plausible. Êtes-vous sûr de ne pas courir:

$this->getPageTitle2(); 
$this->setPageTitle("test"); 

PHP - comme la plupart des langages de programmation - est un langage impératif. Cela signifie que l'ordre dans lequel vous faites les choses est important. La variable $this->Header n'est pas définie au moment où vous appelez getPageTitle2.

+1

anonyme sons susceptibles de me .. bien –

+0

i ont d'autres fonctions // (le seul qui appelle la fonction set) getPageContents fonction() { $ this-> setPageTitle ("test") } et l'autre fonction setContent // exécute la getPageTitle2 { echo '

'.$this->getPageTitle2().'
'; Donc, je ne pensais pas que cela importait le placement des fonctions dans une classe. Peut-être que getPageContents() doit être placé au-dessus de Set()? – Fearghal

+0

@Fergs Placement de la méthode dans la classe n'a pas d'importance, ce que je peux garantir. Quelque part dans votre code, vous appelez explicitement getPageTitle2(), avant d'appeler setPageTitle() - il n'existe aucun moyen implicite ou automagique d'appeler une méthode nommée getPageTitle2. – meagar

0
class Profile { 

var $Heading; 

// ... 

function setPageTitle($title) 
{ 
    $this->Heading = $title; 
    echo 'S: ' . $this->Heading; 
} 

function getPageTitle2() 
{  
    echo 'G: ' . $this->Heading; 
    return $this->Heading; 
} 

// ... 
} 

Je suppose que vous faites quelque chose comme ceci:

$profile = new Profile(); 
$profile->setPageTitle("test"); 
$profile->getPageTitle2(); 

et que cela aboutirait à la sortie suivante:

S: testG: test 

et que si vous echo $profile vous obtiendrez juste

test 

alors que pensez-vous est le problème ou que n'atteignez-vous pas que vous voulez?

aussi je serais probablement déclarer $Heading comme

private $heading; 
Questions connexes