【问题标题】:Defining a variable in a class and using it in functions在类中定义变量并在函数中使用它
【发布时间】:2010-03-25 16:19:23
【问题描述】:

我正在尝试学习 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() 方法中尝试了$this-&gt;baseUrl = $baseUrl;,尽管哈哈,我不知道我到底在想什么。

感谢任何帮助:)

【问题讨论】:

    标签: php api variables class rapidshare


    【解决方案1】:

    试试这个:

    class C
    {
        public $v = 'Hello, world!';
    
        function printHello()
        {
            echo $this->v;   // "Hello, world!"
        }
    }
    
    $obj = new C();
    $obj->printHello();
    

    【讨论】:

      【解决方案2】:

      试试

      class RS {
        public $baseUrl = 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=';
      
        function apiCall($params) {
          echo $this->baseUrl;
        }
      }
      

      我相信你是这样调用这段代码的?

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

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

      【讨论】:

      • 嗨,当我这样做时,我得到了这个错误:Fatal error: Cannot access empty property in C:\xampp\htdocs\RS_class\rs.class.php on line 9
      • 当我在函数中使用$this 时,我得到这个错误:Using $this when not in object context
      • 函数内没有实例 ($this),因为错误状态,必须在对象上下文(类内)中使用。
      【解决方案3】:
      function apiCall($params)
      {
          echo $this->baseUrl;
      }
      

      您可以像这样访问类变量 int 方法。 当您使用$this-&gt;baseUrl = $baseUrl; 您使用可能为 NULL 的本地 var $baseUrl 更改类 var $baseUrl 的值 这就是为什么你没有得到任何回报

      【讨论】:

        猜你喜欢
        • 2021-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 2018-12-07
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        相关资源
        最近更新 更多