2010-03-25 14 views
5

Ich versuche PHP-Klassen zu lernen, damit ich mehr OOP-Projekte programmieren kann. Um mir beim Lernen zu helfen, entwickle ich eine Klasse, die die Rapidshare-API verwendet. Hier ist meine Klasse:Eine Variable in einer Klasse definieren und in Funktionen verwenden

<?php 

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

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

?> 

$params eine Reihe von Schlüsselpaar Werte enthalten, wie folgt aus:

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

die später zu $baseUrl angefügt werden, um die endgültige URL zu machen, aber ich kann nicht Lassen Sie $ baseUrl in meiner apiCall() Methode erscheinen. Ich habe folgendes versucht:

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

und versuchte sogar $this->baseUrl = $baseUrl; in meinem apiCall() methid, ich weiß nicht, was zum Teufel ich dachte es allerdings lol.

Jede Hilfe ist willkommen Dank :)

Antwort

12

Versuchen

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

Ich vertraue dir diesen Code aufrufen, wie so?

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

Klassenattribute müssen in PHP $this vorangestellt werden. Die einzigen Ausnahmen sind static methods und class constants, wenn Sie self verwenden.

+0

Hallo, wenn ich tue das, dass ich diesen Fehler bekomme: 'Fataler Fehler: kann auf freie Eigenschaft in C: \ xampp \ htdocs \ RS_class \ rs.class.php auf Leitung 9 nicht zugreifen – Josh

+0

Nevermind, das war ein Fehler meinerseits. Danke :) – Josh

+0

Wenn ich '$ this' innerhalb einer Funktion benutze, bekomme ich diesen Fehler:' $ dies verwenden, wenn nicht im Objektkontext' – mrid

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

Sie können auf int-Methoden der Klassenvariablen wie diese zugreifen. Wenn Sie $this->baseUrl = $baseUrl; Sie den Wert der Klasse var ändern $baseUrl mit einem lokalen var $baseUrl die wahrscheinlich NULL ist , warum Sie keinen Wert

immer zurück
2

Try this:

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

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

$obj = new C(); 
$obj->printHello(); 
Verwandte Themen