2010-03-25 3 views
5

J'essaie d'apprendre des classes PHP pour pouvoir coder d'autres projets POO. Pour m'aider à apprendre, je construis une classe qui utilise l'API Rapidshare. Voici ma classe:Définition d'une variable dans une classe et utilisation de celle-ci dans les fonctions

<?php 

class RS 
{ 
    public $baseUrl = 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub='; 

    function apiCall($params) 
    { 
     echo $baseUrl; 
    } 
} 

?> 

$params contiendra un ensemble de valeurs de paire de clés, comme celui-ci:

$params = array(
    'sub' => 'listfiles_v1', 
    'type' => 'prem', 
    'login' => '746625', 
    'password' => 'not_my_real_pass', 
    'realfolder' => '0', 
    'fields' => 'filename,downloads,size', 
    ); 

qui sera ensuite ajouté à $baseUrl pour faire l'URL de la demande finale, mais je ne peux pas obtenir $ baseUrl pour apparaître dans ma méthode apiCall(). Je l'ai essayé ce qui suit:

var $baseUrl = 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub='; 

$baseUrl = 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub='; 

private $baseUrl = 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub='; 

Et même essayé $this->baseUrl = $baseUrl; dans mon apiCall() methid, je ne sais pas ce que l'enfer je pensais bien là lol.

Toute aide est appréciée merci :)

Répondre

12

Essayez

function apiCall($params) 
{ 
    echo $this->baseUrl; 
} 

Je vous fais confiance appelez ce code comme ça?

$rs = new RS; 
$rs->apiCall($params); 

Les attributs de classe doivent être préfixé avec $this en PHP. Les seules exceptions sont static methods et class constants lorsque vous utilisez self.

+0

Salut, quand je fais que je reçois cette erreur: Erreur fatale: Impossible d'accéder à la propriété vide dans C: \ xampp \ htdocs \ RS_class \ rs.class.php sur la ligne 9' – Josh

+0

Nevermind, c'était une erreur de ma part. Merci :) – Josh

+0

lorsque j'utilise '$ this' dans une fonction, j'obtiens cette erreur:' Utiliser $ this dans le contexte d'un objet ' – mrid

0
function apiCall($params) 
{ 
    echo $this->baseUrl; 
} 

Vous pouvez accéder aux variables de classe int comme ceci. Lorsque vous utilisez $this->baseUrl = $baseUrl; Vous modifiez la valeur de la classe var $baseUrl avec une var locale $baseUrl qui est probablement NULL Ce pourquoi vous n'obtenez une valeur de retour

2

Essayez ceci:

class C 
{ 
    public $v = 'Hello, world!'; 

    function printHello() 
    { 
     echo $this->v; // "Hello, world!" 
    } 
} 

$obj = new C(); 
$obj->printHello(); 
Questions connexes