2009-07-17 4 views
2

Je suis assez nouveau pour PHP, donc j'ai un petit problème que j'apprends:classe PHP ne reviendra pas à une chaîne

J'ai construit une classe appelée DataStrip.php

<?php 

final class DataStrip 
{ 
    public function DataStrip() 
    { 
     // constructor 
    } 

    public function stripVars($vars) 
    { 

     return $vars; 
    } 
} 
?> 

et je suis en train de passer la fonction publique stripVars une valeur:

<?php 

    include_once ('lib/php/com/DataStrip.php'); 

    echo($projCat); 
    $a = new DataStrip; 
    $a->stripVars($projCat); 
    echo($a); 

?> 

cependant, je reviens cette erreur:

(!) Catchable fatal error: Object of class DataStrip could not be converted to string in myfilepath

... un conseil peut-être sur ce que je pourrais faire mal ici? En ce moment c'est juste une fonction de test car j'essaie de m'habituer à PHP OOP. :)

+0

Je suppose qu'il manque du code dans l'implémentation donnée de 'stripVars()'? Pouvez-vous l'ajouter? – beggs

+0

Voulez-vous dire 'echo ($ a-> stripVars ($ projCat));'? –

Répondre

11

Qu'attendez-vous qu'il se passe? Vous n'êtes pas sauvegarder le résultat de ce que stripVars retourne dans une variable:

$result = $a->stripVars($projCat); 
print $result; 

Qu'est-ce que vous essayez de faire est d'imprimer la variable d'objet lui-même. Si vous voulez contrôler ce qui se passe lorsque vous essayez d'imprimer un objet, vous devez définir le __toString method.

+0

Paolo, merci. Je n'ai pas réalisé que $ a était un objet quand j'essayais de le référencer. –

1

pas En cas de retour à une variable:

$projCat = $a->stripVars($projCat); 

Lorsque vous echo $a vous faisant écho à l'objet - aucune fonction particulière ou variable à l'intérieur (depuis quand vous déclarez $a vous déclarer comme tout dans la classe -. variables, fonctions, tout le kit et kaboodle

J'ai aussi des problèmes avec php oop, donc s'il vous plaît corriger si je me trompe :)

4

si vous voulez faire ... vous besoin de déclarer la méthode __t oString()

<?php 

    final class DataStrip 
    { 
    private $vars; 

      public function DataStrip() 
      { 
        // constructor 
      } 

      public function stripVars($vars) 
      { 

        $this->vars = $vars; 
      } 

      public function __toString() { 

      return (string) $this->vars; 
      } 


    } 

// then you can do 

$a = new DataStrip; 
    $a->stripVars($projCat); 
    echo($a); 

    ?> 
Questions connexes