2010-03-25 124 views
5

我在学习PHP类,因此我可以开始编写更多的OOP项目。为了帮助我学习,我正在构建一个使用Rapidshare API的类。这里是我的类:在类中定义变量并在函数中使用它

<?php 

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

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

?> 

$params将包含一套密钥对价值的,就像这样:

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

稍后将追加到$baseUrl做最后的请求的URL,但我不能让$ baseUrl出现在我的apiCall()方法中。我曾尝试以下:

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

即使在我apiCall() methid试图$this->baseUrl = $baseUrl;,我不知道什么是地狱,我虽然笑想在那里。

任何帮助表示赞赏谢谢:)

回答

12

尝试

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

我相信你在呼唤这个代码像这样?

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

在PHP中,类属性需要以$this作为前缀。当您使用self时,唯一的例外是static methodsclass constants

+0

嗨,当我这样做我得到这个错误:致命的错误:无法访问第9行C:\ xampp \ htdocs \ RS_class \ rs.class.php中的空属性。 – Josh 2010-03-25 16:23:44

+0

Nevermind,这是我的错误。谢谢:) – Josh 2010-03-25 16:25:52

+0

当我在函数中使用'$ this'时,我得到这个错误:'当不在对象上下文中时使用$ this' – mrid 2017-01-11 19:34:18

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

您可以像这样访问类变量int方法。 当您使用$this->baseUrl = $baseUrl; 你有一个局部变量$baseUrl这可能是NULL更改类变种$baseUrl的价值 这就是为什么你没有得到任何值回

2

试试这个:

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

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

$obj = new C(); 
$obj->printHello(); 
相关问题