PHP code example of arhitector / yandex

1. Go to this page and download the library: Download arhitector/yandex library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

arhitector / yandex example snippets



// передать OAuth-токен зарегистрированного приложения.
$disk = new Arhitector\Yandex\Disk('OAuth-токен');

/**
 * Получить Объектно Ориентированное представление закрытого ресурса.
 * @var  Arhitector\Yandex\Disk\Resource\Closed $resource
 */
$resource = $disk->getResource('новый файл.txt');

// проверить сущестует такой файл на диске ?
$resource->has(); // вернет, например, false

// загрузить файл на диск под имененм "новый файл.txt".
$resource->upload(__DIR__.'/файл в локальной папке.txt');

// файл загружен, вывести информацию.
var_dump($resource->toArray())

// теперь удалить в корзину.
$removed = $resource->delete();

try
{
  try
  {
    /**
     * Получить закрытый ресурс
     * @var  Arhitector\Yandex\Disk\Resource\Closed $resource
     */
    $resource = $disk->getResource('новый файл.txt');

    // До этого момента запросов к Диску не было
    // Только сейчас был сделан запрос на получение информации о ресурсе к Яндекс.Диску
    // Вывести информацию. Когда ресурс не найден будет вызвано исключение NotFoundException
    $resource->toArray();
  }
  catch (Arhitector\Yandex\Client\Exception\NotFoundException $exc)
  {
    // Ресурс на Диске отсутствует, загрузить под именем 'новый файл.txt'
    $resource->upload(__DIR__.'/файл в локальной папке.txt');
  }

  // Теперь удалю, совсем.
  $file->delete(true);
}
catch (Arhitector\Yandex\Client\Exception\UnauthorizedException $exc)
{
	// Записать в лог, авторизоваться не удалось
	log($exc->getMessage());
}
catch (Exception $exc)
{
	// Что-то другое
}

$client = new Arhitector\Yandex\Client\OAuth('OAuth-токен');

$disk = new Arhitector\Yandex\Disk($client);

$disk = new Arhitector\Yandex\Disk('OAuth-токен');

$client->setAccessToken('OAuth-токен');

$disk->setAccessToken('OAuth-токен');

/**
 * @var Arhitector\Yandex\Client\OAuth  $client
 * @var Arhitector\Yandex\Disk          $disk
 */

public $this OAuth::setAccessToken(string $token)

public $this Disk::setAccessToken(string $token)

$disk->setAccessToken('0c4181a7c2cf4521964a72ff57a34a07');

$client->setAccessToken('0c4181a7c2cf4521964a72ff57a34a07');

public mixed OAuth::getAccessToken( void );

public mixed Disk::getAccessToken( void );

$disk->getAccessToken(); // null

$client->getAccessToken(); // string '0c4181a7c2cf4521964a72ff57a34a07'

$disk->total_space; // объём диска

$resource->size; // размер файла

$disk['free_space']; // свободное место

$resource['name']; // название файла/папки

public mixed Объект::get(string $index [, mixed $default = null])

// индекс total_space
$disk->get('total_space');

// custom_properties или FALSE если отсутствует
$resource->get('custom_properties', false);

 // вернёт результат 'any thing' анонимной функции 
$removedResource->get('property_123', function (Removed $resource) {
  return 'any thing';
});

public array Объект::toArray([array $allowed = null])

// массив информация о Яндекс.Диске
$disk->toArray();

// получить только 
$disk->toArray(['total_space', 'free_space']);

// массив объектов
$collection->toArray();

// массив, информация о ресурсе
$resource->toArray();

public stdClass Объект::toObject([array $allowed = null])

$disk->toObject();

$collection->toObject();

$resource->toObject(['name', 'type']);

public ArrayIterator Объект::getIterator( void )

$disk->getIterator();

$collection->getIterator();

$resource->items->getIterator();

foreach ($resource->items as $item)
{
  // $item объект ресурса `Resource\\*`, вложенный в папку.
}

public integer Объект::count( void )

// Возвращает количество асинхронных операций экземпляра.
$disk->count();

// в других случаях размер контейнера
$resource->items->count();

public bool Объект::has([string $key = NULL])

$disk->has('total_space_123'); // false

$resource->has('name'); // true

$resource->has(); // true

public boolean Объект::hasProperty(string $key)

$resource->hasProperty('custom_properties'); // false

$disk->toArray();

array (size=5)
    'trash_size' => int 187017199
    'total_space' => float 14495514624
    'used_space' => float 14083430863
    'system_folders' => array (size=2)
        'applications' => string 'disk:/Приложения' (length=26)
        'downloads' => string 'disk:/Загрузки/' (length=23)
    'free_space' => float 412083761

$disk->count(); // int 0

count($disk); // int 5

// метод get
$disk->get('total_space'); // float 14495514624

// объект->свойство
$disk->used_space; // float 14083430863

// объект['свойство']
$disk['system_folders'];

/* array (size=2)
'applications' => string 'disk:/Приложения' (length=26)
'downloads' => string 'disk:/Загрузки/' (length=23) */

// используем параметр $default
$disk->get('не существующее свойство', 'default value'); // string 'default value'

public Resource\Closed Disk::getResource(string $path [, int $limit = 20 [, int $offset = 0]])

/**
 * @var Arhitector\Yandex\Disk\Resource\Closed  $resource
 */
$resource = $disk->getResource('/путь от корня диска/до файла/или папки/название.txt');

$resource = $disk->getResource('disk:/путь от корня диска/до файла/или папки/название.txt');

/**
 * @var Arhitector\Yandex\Disk\Resource\Closed  $resource
 */
$resource = $disk->getResource('app:/название.txt', 100, 10);

$resource = $disk->getResource('/', 10);

$resource = $disk->getResource('/', 10, 5);

$resource->setLimit(100);

$resource->setOffset(200);

public Resource\Collection Disk::getResources([, int $limit = 20 [, int $offset = 0]])

/**
 * Получить список всех файлов
 *
 * @var Disk\Resource\Collection  $collection
 */
$collection = $disk->getResources();

$disk->getResources(100, 15);

$resource->items; // object 'Arhitector\Yandex\Disk\Resource\Collection'

public mixed Collection::getFirst( void )

$collection->getFirst(); // object 'Resource/Closed'

public mixed Collection::getLast( void )

$collection->getLast(); // object 'Resource/Opened'

$resource->has();

$resource->has('name'); // проверить, есть ли 'name'

$resource->toObject();

$resource->get('items');

$resource->hasProperty('name');

$resource->has('type');

$resource->toArray(['name', 'type', 'size']);

$resource->size;

$resource['type'];

$resource->get('custom_properties', []);

public boolean Объект::isFile( void )

public boolean Объект::isDir( void )

$resource->isFile(); // true

$resource->isDir(); // false

public boolean Объект::isPublish( void )

$resource->isPublish(); // false

// отрыть доступ к ресурсу
if ( ! $resource->isPublish())
{
  $resource->setPublish(true);
}

public string Объект::getPath( void )

$resource->getPath(); // disk:/файл.txt

public $this Closed::set(mixed $meta [, mixed $value = null])

$resource->set('any', 'thing');

$resource->set([
  'any'   => 'thing',
  'thing' => 'any'
]);

$resource['any'] = 'thing';

$resource->any = 'thing';


$resource->set('any', null); // удалить 'any'

$resource->set('thing'); // удалить 'thing'

unset($resource['any']);

unset($resource->any);

public mixed Closed::getProperty(string $index [, mixed $default = null])

$resource->getProperty('any');

$resource->get('thing12141', 'значение по умолчанию'); // вернет значение по умолчанию

$resource->get('index', function (Resource\Closed $resource) {
  // анонимная функция будет вызвана с параметром
  // текущего контекста и значение по умолчанию
  // будет значение, возвращаемое этой функцией

  return 'значение по умолчанию';
});


public array Closed::getProperties( void )

$resource->getProperties(); // array

// метод 'get' также может получать метаинформацию.
// получить всю доступную метаинформацию в виде массива
$resource->get('custom_properties', []);

// получение информации без использования метода 'getProperty'
$resource->get('custom_properties')['thing12141']

public mixed delete([bool $permanently = false])

$resource->delete(); // в корзину

$resource->delete(true); // удалить без помещения в корзину

public mixed Closed::move(mixed $destionation [, $overwrite = FALSE] )

$resource->move('/путь/до/файла.txt');

$resource->move('app:/новая папка', true);

$resource->move($resource2);

public $this Closed::create( void )

$resource->create();

public mixed Closed::setPublish([bool $publish = true])

$resource->setPublish(); // открывает доступ

$resource-setPublish(true); // открывает доступ

$resource->setPublish(false); // закрывает доступ

$resource->isPublish(); // true если ресурс с открытым доступом

$resource->public_url; // URL адрес

public bool Closed::download(mixed $destination [, bool $overwrite = false])

// без перезаписи
$resource->download(__DIR__.'/файл.txt');

// без перезаписи
$resource->download(__DIR__.'/файл.txt', false);

// с перезапсью
$resource->download(__DIR__.'/файл.txt', true);

// открыть любой дескриптор
$fp = fopen(__DIR__.'/файл.txt', 'wb+');

// или и т.д.
$fp = fopen('php://memory', 'r+b');

$resource->download($fp);

// продолжить работу ...
fseek($fp, 0);

$stream = new Stream('php://temp', 'r+');

$resource->download($stream);

var_dump($stream->getSize());

public bool Closed::copy(mixed $destination [,bool  $overwrite = false])

// сделать копию файла
$resource->copy('папка/файл-копия.txt');

// сделать копию папки
$resource->copy('app:/папка-копия');

// сделать копию $resource по пути 'копия/путь до файла.txt'
$resource2 = $disk->getResource('копия/путь до файла.txt');
$resource->copy($resource2, true);

public mixed upload(mixed $file_path [, bool $overwrite = false [, bool $disable_redirects = false]])

$resource->upload(__DIR__.'/файл.txt');

// загрузка с перезаписью
$resource->upload(__DIR__.'/файл.txt', true);

// если передан дескриптор файла, загрузка с перезаписью
$fp = fopen(__DIR__.'/файл.txt', 'rb');
$resource->upload($fp, true);

$operation = $resource->upload('http://домен.ру/файл.zip');

// запретить пере адресацию.
$operation = $resource->upload('https://домен.ру/файл.zip', null, true);

public Resource\Closed Disk::getPublishResource(string $public_key [, int $limit = 20 [, int $offset = 0]])

/**
 * @var Arhitector\Yandex\Disk\Resource\Opened  $publicResource
 */
$publicResource = $disk->getResource('https://yadi.sk/d/g0N4hNtXcrq22');

$publicResource = $disk->getResource('wICbu9SPnY3uT4tFA6P99YXJwuAr2TU7oGYu1fTq68Y=', 10, 0);


$publicResource->setLimit(100);

$publicResource->setOffset(200);

public Resource\Collection Disk::getPublishResources([, int $limit = 20 [, int $offset = 0]])

/**
 * Получить список всех файлов
 *
 * @var Disk\Resource\Collection  $collection
 */
$collection = $disk->getPublishResources();

$disk->getPublishResources(100, 15);

public string Opened::getPublicKey( void )

$publicResource->getPublicKey();

public string Opened::getLink( void )

$publicResource->getLink();

public bool Opened::download(mixed $destination [, bool $overwrite = false [, bool $check_hash = false]])

$publicResource->download(__DIR__.'/file.txt');

$publicResource->download(__DIR__.'/file.txt', true);

$publicResource->download(__DIR__.'/file.txt', true, true);

// открыть любой дескриптор
$fp = fopen(__DIR__.'/файл.txt', 'wb+');

// или и т.д.
$fp = fopen('php://memory', 'r+b');

// true - провести проверку целостности скачанного файла
$publicResource->download($fp, false, true);

// продолжить работу ...
fseek($fp, 0);

$stream = new Stream('php://temp', 'r+');

$publicResource->download($stream);

var_dump($stream->getSize());

$resource->addListeners();


use Arhitector\Yandex\Disk;
use Arhitector\Yandex\Disk\Resource\Closed;
use League\Event\Event;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;

// ... 
$disk->addListener('uploaded', function (Event $event, Closed $resource, Disk $disk, StreamInterface $uploadedStream, ResponseInterface $response) {
	// $event - событие
	// $resource - тоже самое что и $resource
	// $disk - клиент
	// $uploadedStream - в данном примере файл file_path.pdf обернутый в Stream
	// $response - Ответ от Я.Диска. $response->getBody() - не содержит ничего (см. документацию API Я.Диска)
});

// ...
$resource->upload(__DIR__.'/file_path.pdf');


if ($arg === true)
{
    // некоторый код
}
elseif ($arg === null)
{
    // некоторый код
}
else
{
    // некоторый код
}

foreach ($array as $key => $value)
{
    // некоторый код
}

for ($i = 0; $i < $max; $i++)
{
    // некоторый код
}

while ($i < $max)
{
    // некоторый код
}

do
{
    // некоторый код
}
while ($i < $max)

switch ($var)
{
    case 'value1':
        // некоторый код
    break;

    default :
        // некоторый код
    break;
}

if ($var == false and $other_var != 'some_value')
if ($var === false or my_function() !== false)
if ( ! $var)

public void Client::__construct([string $token = null])

$client = new Client();

$client = new Client('0c4181a7c2cf4521964a72ff57a34a07');

public string Client::getContentType( void )

$client->getContentType(); // application/json

$ php composer.phar 
php
$client->getClientOauth(); // null

$client->getClientOauth(); // string '123456789'
php
$client->setClientOauthSecret('--------');
php
$client->getClientOauthSecret(); // null

$client->getClientOauthSecret(); // string '--------'
php
$client->setAccessToken('0c4181a7c2cf4521964a72ff57a34a07');
php
$client->getAccessToken(); // null

$client->getAccessToken(); // string '0c4181a7c2cf4521964a72ff57a34a07'
php
$client->addListener('disk.downloaded', function (Event $event, $resource) {
  // скачивание файла завершено
});
php
$client->removeListener('disk.downloaded', function (Event $event, $resource) {

});
php
$client->addOneTimeListener('disk.downloaded', function (Event $event, $resource) {
  // скачивание файла завершено
});
php
$client->removeAllListeners('disk.downloaded');
php
$client->useListenerProvider(new MyProvider);
php
$client->emit('custom.event', 'custom parameter', 'etc.');