Я пытаюсь изучить классы PHP, таким образом, я могу начать кодировать больше проектов ООП. Чтобы помочь мне учиться, я создаю класс, который использует API Rapidshare. Вот мой класс:
<?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=';
И даже попробованный $this->baseUrl = $baseUrl;
в моем apiCall()
methid, я не знаю то что, черт возьми, я думал там хотя lol.
Любая справка ценится спасибо :)
Попробуйте
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);
Атрибуты класса должны иметь префикс $ this
в PHP. Единственным исключением являются статические методы и константы класса при использовании self
.
Попробуйте следующее:
class C
{
public $v = 'Hello, world!';
function printHello()
{
echo $this->v; // "Hello, world!"
}
}
$obj = new C();
$obj->printHello();
function apiCall($params)
{
echo $this->baseUrl;
}
Вы можете получить доступ к методам int переменных класса следующим образом.
Когда вы используете $ this-> baseUrl = $ baseUrl;
Вы изменяете значение класса var $ baseUrl
на локальную переменную $ baseUrl
, которая, вероятно, имеет значение NULL
Вот почему вы не получаете никакого значения назад