передача переменной в класс php - PullRequest
1 голос
/ 28 мая 2011

Я новичок в php. и пытается работать с Oauth. но это не главное. Суть в следующем: у меня есть класс Oauth, есть четыре функции, которые возвращают URL, как это:

class tOauth{
    ......
    function accessTokenURL()  {
        return 'http://api.twitter.com/oauth/access_token'; 
    }  
    function authenticateURL() { 
        return 'http://api.twitter.com/oauth/authenticate'; 
    } 
    ......
}

это отлично работает. но теперь я хочу, чтобы эти функции были общими, чтобы они подходили для любых социальных сайтов. это означает, что я должен пройти все URL-адреса и вернуть их во время выполнения. поэтому я придумаю что-то вроде этого:

class tOauth{
    ....
    public $accessTokenURL,$authenticateURL;
    function accessTokenURL()  {
        return $this->accessTokenURL; 
    }  
    function authenticateURL() { 
        return $this->authenticateURL; 
    } 
    ....
}

и во время выполнения я называю их так:

$oauth=new Oauth(key,secret);
$oauth->accessTokenURL='http://www.facebook.com/oauth/access_token';
$oauth->authenticateURL='http://www.facebook.com/oauth/authenticate';
$token=$oauth->requestToken($someurl);    

но по какой-то причине это, похоже, не работает. Я больше ничего не менял. Кажется, я не могу назначать переменные таким образом Кто-нибудь знает, в чем может быть проблема? спасибо за любые советы.

Обновление: весь пример кода можно найти здесь: https://github.com/abraham/twitteroauth/blob/master/twitteroauth/twitteroauth.php

Ответы [ 2 ]

0 голосов
/ 28 мая 2011

Почему бы не написать методы getter и setter для переменных класса?

У вас уже есть методы, которые возвращают accessTokenURL и authentificateURL.

Я считаю, что это может сработать:

        class tOauth{
    ....
    public $accessTokenURL,$authenticateURL;
    function accessTokenURL()  {
        return $this->accessTokenURL; 
    }  
    function authenticateURL() { 
        return $this->authenticateURL; 
    }
    function set_accessTokenURL($token)
    {
        $this->accessTokenURL = $token;
    }
    function set_authenticateTokenURL($token)
    {
       $this->authenticateTokenURL = $token;
    }
    ....
    }
0 голосов
/ 28 мая 2011

Обновление: В вашем коде нет подробных сведений о методе requestToken().Следующее решение получает вместо вас токен доступа.

Вы прочитали что-то, что вы не установили в соответствии с вашим кодом.Замените последнюю строку на

$token=$oauth->accessToken($someurl);

, и она будет работать для accessToken.

Также рассмотрите наследование , которое позволит вам хранить общие инструкции в tOauthclass и специфичные для службы в отдельных классах, унаследованных от него (например, Twitter_Oauth может наследоваться от вашего tOauth класса и иметь определенные URL-адреса, установленные по умолчанию с самого начала, без необходимости каждый раз устанавливать их).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...