2010-03-25 28 views
5

Tôi đang cố gắng học các lớp PHP để tôi có thể bắt đầu viết mã các dự án OOP. Để giúp tôi tìm hiểu tôi đang xây dựng một lớp học sử dụng API Rapidshare. Đây là lớp học của tôi:Xác định một biến trong một lớp và sử dụng nó trong các hàm

<?php 

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

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

?> 

$params sẽ chứa một tập hợp các giá trị cặp khóa, như thế này:

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

nào sau này sẽ được nối vào $baseUrl để làm cho URL yêu cầu cuối cùng, nhưng tôi không thể nhận $ baseUrl để xuất hiện trong phương thức apiCall() của tôi. Tôi đã thử những điều sau đây:

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

Và thậm chí cố gắng $this->baseUrl = $baseUrl; trong apiCall() methid của tôi, tôi không biết cái quái gì tôi đã suy nghĩ đó mặc dù lol. nhờ

Any help is appreciated :)

Trả lời

12

Hãy thử

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

tôi tin tưởng bạn đang gọi mã này như vậy?

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

Thuộc tính lớp cần được bắt đầu bằng $this trong PHP. Ngoại lệ duy nhất là static methodsclass constants khi bạn sử dụng self.

+0

Hi, khi tôi làm điều đó tôi nhận được lỗi này: 'Lỗi nghiêm trọng: Không thể truy cập tài sản trống trong C: \ xampp \ htdocs \ RS_class \ rs.class.php trên dòng 9' – Josh

+0

Nevermind, đó là lỗi của tôi. Cảm ơn :) – Josh

+0

khi tôi sử dụng '$ this' trong một hàm, tôi nhận được lỗi này:' Sử dụng $ this khi không ở trong bối cảnh đối tượng' – mrid

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

Bạn có thể truy cập các biến lớp int các phương pháp như thế này. Khi bạn sử dụng $this->baseUrl = $baseUrl; Bạn thay đổi giá trị của lớp var $baseUrl với một var địa phương $baseUrl mà có lẽ NULL Đó lý do tại sao bạn không nhận được bất kỳ giá trị trở lại

2

Hãy thử điều này:

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

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

$obj = new C(); 
$obj->printHello(); 
Các vấn đề liên quan