Сегодня мы посмотрим на простую реализацию скрипта с помощью которого можно получить число ваших последователей на Twitter.
Можете пользоваться данным скриптом на своё усмотрение.
Во-первых, создаём файл Cache.php и копируем туда код:
/**
* @desc Class реализация кэш функциональности
*/
class Cache
{
const PATH_TO_CACHE = 'cache/';
/**
* @desc считать данные из кэша
* @param string $fileName - название кэш файла
* @return bool/string
* Usage: Cache::read('fileName.extension')
*/
function read($fileName)
{
$fileName = self::PATH_TO_CACHE . $fileName;
if (file_exists($fileName)) {
$handle = fopen($fileName, 'rb');
$data = fread($handle, filesize($fileName));
$data = unserialize($data);
// проверка истечения срока жизни кэша
if (time() > $data[0]) {
// it expired, delete the file
@unlink($fileName);
return false;
}
fclose($handle);
// если кэш валиден, возвращаем данные
return $data[1];
} else {
return false;
}
}
/**
* @desc записать кэш типа key => value
* @param string $fileName - название кэш файла (ключ)
* @param mixed $variable - значение
* @param number $ttl - время жизни файла
* @return void
* Usage: Cache::write('fileName.extension', value)
*/
function write($fileName, $variable, $ttl)
{
$fileName = self::PATH_TO_CACHE . $fileName;
$handle = fopen($fileName, 'a');
fwrite($handle, serialize(array(time() + $ttl, $variable)));
fclose($handle);
}
/**
* @desc удаление кэш файла
* @param string $fileName - название кэш файла (ключ)
* @return void
* Usage: Cache::delete('fileName.extension')
*/
function delete($fileName)
{
$fileName = self::PATH_TO_CACHE . $fileName;
@unlink($fileName);
}
}
Данный класс будет использоваться для создания и считки кэша. Так же в классе есть такой параметр как время жизни кэша, так что вы можете быть спокойны о “свежести” информации.
Для работы с Twitter, я заюзаю библиотеку, которую нашёл на Github. Создайте файл TwitterAPIExchange.php и вставьте следующий код:
function getTwitterFollowers($screenName = 'codeforest')
{
require_once('Cache.php');
require_once('TwitterAPIExchange.php');
// данную информаци можно взять при создании Twitter приложения на http://dev.twitter.com/apps
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);
$cache = new Cache();
// получаем последователей из кэша
$numberOfFollowers = $cache->read('cfTwitterFollowers.cache');
// если кэша нет или время его жизни истекло
if (false === $numberOfFollowers) {
// создаём запрос
$apiUrl = "https://api.twitter.com/1.1/users/show.json";
$requestMethod = 'GET';
$getField = '?screen_name=' . $screenName;
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getField)
->buildOauth($apiUrl, $requestMethod)
->performRequest();
$followers = json_decode($response);
$numberOfFollowers = $followers->followers_count;
// кэшируем информацию на час
$cache->write('cfTwitterFollowers.cache', $numberOfFollowers, 1*60*60);
}
return $numberOfFollowers;
}
Теперь, там где вам нужно внедрить функционал воспользуйтесь следующем кодом:
// подключаем файлы!
require_once(getTwitterFollowers.php);
// получаем инфу из Twitter
echo getTwitterFollowers('codeforest');