2010-03-25 10 views
5

Estoy tratando de aprender clases PHP para poder comenzar a codificar más proyectos OOP. Para ayudarme a aprender, estoy creando una clase que usa la API de Rapidshare. Aquí está mi clase:Definir una variable en una clase y usarla en las funciones

<?php 

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

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

?> 

$params contendrá un conjunto de valores de par de claves, así:

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

que posteriormente se anexa a $baseUrl para hacer la petición de URL final, pero no puedo obtener $ baseUrl para que aparezca en mi método apiCall(). He intentado el siguiente:

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='; 

e incluso trató $this->baseUrl = $baseUrl; en mi apiCall() methid, no sé qué demonios estaba pensando allí, sin embargo lol. gracias

Cualquier ayuda se agradece :)

Respuesta

12

Trate

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

Confío en la que llama el código como tal?

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

Los atributos de clase deben ser prefijado con $this en PHP. Las únicas excepciones son static methods y class constants cuando usa self.

+0

Hola, cuando Debo obtener este error: 'Error fatal: no se puede acceder a la propiedad vacía en C: \ xampp \ htdocs \ RS_class \ rs.class.php en la línea 9' – Josh

+0

No importa, eso fue un error de mi parte. Gracias :) – Josh

+0

cuando uso '$ this' dentro de una función, obtengo este error:' Usando $ this cuando no está en el contexto del objeto' – mrid

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

Puede acceder a variables de clase en métodos como este. Cuando se utiliza $this->baseUrl = $baseUrl; cambia el valor de la clase var $baseUrl con una var $baseUrl que es probablemente NULL por eso que no está recibiendo ningún valor de nuevo

2

Prueba esto:

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

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

$obj = new C(); 
$obj->printHello(); 
Cuestiones relacionadas