2010-08-13 5 views
1

J'essaie d'attribuer une variable à une classe en PHP, mais je n'obtiens aucun résultat.Problème avec l'affectation de la variable de classe en PHP

Quelqu'un peut-il offrir de l'aide? Le code est fourni ci-dessous. J'essaye d'écho l'URL comme montré ci-dessous, en l'assignant d'abord à une variable de classe.

class PageClass { 


    var $absolute_path = NULL; 

    function get_absolute_path(){ 

    $url = $this->absolute_path; 

    echo $url; 

    } 

} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

$page->get_absolute_path(); //this should echo the URL as defined above - but does not 

Répondre

3

Cela fonctionne aussi pour moi.

Take a look at a live example of your code here.

Cependant, il y a quelques choses que vous devriez changer votre classe. Tout d'abord, Garvey fait un bon point que vous ne devriez pas utiliser var. C'est l'ancienne version consciente de PHP4, moins OOP. Déclarez plutôt chaque variable public ou private. En fait, vous devez également déclarer chaque fonction public ou private.

Généralement, la plupart des classes ont des variables privées, puisque vous ne voulez généralement que changer les variables de manière spécifique. Pour réaliser ce contrôle, vous définissez généralement plusieurs méthodes publiques pour permettre aux fonctions client d'interagir avec votre classe uniquement de manière prédéterminée et restreinte.

Si vous avez un getter, vous voudrez probablement un setter, car ils sont généralement utilisés avec des variables private, comme je l'ai décrit ci-dessus.

Une dernière note est que les fonctions nommées get habituellement return une valeur. Si vous voulez display une valeur, il est d'usage d'utiliser un nom comme display_path ou show_path:

<?php 

    class PageClass 
    { 
     private $absolute_path = NULL; 

     public function set_absolute_path($path) 
     { 
      $this->absolute_path = $path; 
     } 

     public function display_absolute_path() 
     { 
      echo $this->absolute_path; 
     } 
    } 

$page = new PageClass(); 
$page->set_absolute_path("http://localhost:8888/smile2/organic/"); 

$page->display_absolute_path(); 
    // The above outputs: http://localhost:8888/smile2/organic/ 

// Your variable is now safe from meddling. 
// This: 
// echo $this->absolute_path; 
// Will not work. It will create an error like: 
// Fatal error: Cannot access private property PageClass::$absolute_path on ... 

?> 

Live Example Here

There's a section on classes and objects dans la référence PHP en ligne.

3
class PageClass { 

    public $absolute_path = NULL; 

    function get_absolute_path(){ 
     $url = $this->absolute_path; 
     return $url; 
    } 

} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

echo $page->get_absolute_path(); 
1

fonctionne bien pour moi.
Avez-vous vérifié que le script et esp. le code en question est exécuté du tout?
E.g. ajouter une sortie de débogage inconditionnelle au script. Ou installez un débogueur tel que XDebug pour parcourir le code et inspecter les variables.

<?php 
class PageClass { 
    var $absolute_path = NULL; // old php4 declaration, see http://docs.php.net/oop5 

    function get_absolute_path() { // again old php4 declaration 
    $url = $this->absolute_path; 
    echo "debug: "; var_dump($url); 
    echo $url; 
    } 
} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

echo "debug: page->get_absolute_path\n"; 
$page->get_absolute_path(); 
Questions connexes