Sono andato un po' avanti col lavoro e mi sono sorti dei seri dubbi sulla mia implementazione dell'oop, è la prima volta che lo uso e sono un po' disorientato.
Praticamente vorrei creare una classe (o più) che mi permetta di gestire varie azioni (dal log in con oauth alla creazione di file) tramite le api di un servizio chiamato Ubuntu One.
Dopo aver creato una funzione per il login ho cominciato a crearne una per prendere le info su un certo account; in questa seconda funzione utilizzo una variabile che viene definita nella prima e quindi mi dà un errore fatale.
Codice PHP:
<?php
class UbuntuOne{ //dovrebbe richiedere user, pass e app_name
const login_api_url = 'https://login.ubuntu.com/api/1.0/authentications?ws.op=authenticate&token_name=Ubuntu%20One%20@%20';
const login_api_tell_url = 'https://one.ubuntu.com/oauth/sso-finished-so-get-tokens/';
public function getTokens($login_api_url, $login_api_tell_url, $user_email, $pwd, $app_name) { //ci dovrebbe essere controllo se token già avuti
$url = self::login_api_url.$app_name; //trovare nuovo nome variabili
$user_pwd = $user_email.':'.$pwd;
$curl = curl_init($url); //cambiare nome variabile
curl_setopt($curl, CURLOPT_USERPWD, $user_pwd);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($curl);
$result_d = json_decode($result, 1);
curl_close($curl);
$conskey = $result_d['consumer_key'];
$conssec = $result_d['consumer_secret'];
$token = $result_d['token'];
$secret = $result_d['token_secret'];
$oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
$oauth->enableSSLChecks();
$oauth->setToken($token,$secret);
$tellurl = self::login_api_tell_url.$user_email;
$oauth->fetch($tellurl);
print_r($oauth->getLastResponse());
}
public function getAccountInfo(){
$info = $oauth->fetch("https://one.ubuntu.com/api/account/");
$info_d = json_decode($info);
return $info_d;
}
}
$u1 = new UbuntuOne;
$connect = $u1->getTokens($u1::login_api_url, $u1::login_api_tell_url, "mail", "Pass", "try2");
$infoacc = $u1->getAccountInfo();
print_r($infoacc);
?>
Ora credo che tutto sia dovuto al fatto che la mia implementazione della classe non sia corretta. Mi potreste dare una mano ad impostarla diversamente?