2017 © Pedro PelΓ‘ez
 

library yandex-disk-api

image

leonied7/yandex-disk-api

  • Wednesday, April 26, 2017
  • by leonied7
  • Repository
  • 0 Watchers
  • 4 Stars
  • 40 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 38 % Grown

The README.md

PHP Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΊ API ЯндСкс диска

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠΠ΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ PHP SDK для сСрвиса ЯндСкс.Диск, (*1)

Бписок измСнСний

27/12/2018 * ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСписана Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с api * ΡƒΠΏΡ€Π°Ρ‰Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SDK * ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ README, (*2)

ВрСбования

  • PHP 5.6+
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ php_curl

Установка

Composer

composer require leonied7/yandex-disk-api:dev-master

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*3)

require_once __DIR__ . "/vendor/autoload.php";

ВСсты

Запуск тСстов ΠΈΠ· корня Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:, (*4)

vendor/phpunit/phpunit/phpunit --configuration phpunit.xml

ОписаниС

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

SDK для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ WebDAV API ЯднСкс Диска. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ OAuth-Ρ‚ΠΎΠΊΠ΅Π½(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, AQACc1234LDE2f_123UIbouFHzfxxcvDI), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ: * Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ https://oauth.yandex.ru/, (*5)

OAuth-Ρ‚ΠΎΠΊΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° "ЯндСкс.Диск WebDAV API", (*6)

ВозмоТности

  • Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ Π½Π° ЯндСкс.ДискС (созданиС, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, публикация ΠΈ Ρ‚.Π΄.)
  • Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π½Π° ЯндСкс.ДискС (созданиС, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, скачиваниС, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, публикация ΠΈ Ρ‚.Π΄.)
  • ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ скачиваниС Ρ„Π°ΠΉΠ»ΠΎΠ²
  • Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ скачиваниС Ρ„Π°ΠΉΠ»ΠΎΠ²

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

use \Leonied7\Yandex\Disk;
$yandexDisk = new Disk('OAuth-Ρ‚ΠΎΠΊΠ΅Π½');

ИспользованиС

  • \Leonied7\Yandex\Disk - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с диском, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ дискС ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ
  • \Leonied7\Yandex\Disk\Item\File - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠΌ php /** @var \Leonied7\Yandex\Disk\Item\File $file */ $yandexDisk->file('/path/to/file/');
  • \Leonied7\Yandex\Disk\Item\Directory - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ php /** @var \Leonied7\Yandex\Disk\Item\Directory $directory */ $directory = $yandexDisk->directory('/path/to/directory/');

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

  • \Leonied7\Yandex\Disk\Entity\Result - послС выполнСния любого запроса ΠΊ ЯндСкс.Диску ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, (*7)

  • \Leonied7\Yandex\Disk\Entity\Collection, (*8)

  • \Leonied7\Yandex\Disk\Model\Property, (*9)

  • \Leonied7\Yandex\Disk\Item\Item, (*10)

  • \Leonied7\Yandex\Disk\Model\Decorator
    • \Leonied7\Yandex\Disk\Decorator\CurrentElement - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ элСмСнтС с Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ
    • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollection - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнта с Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ
    • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollectionItem - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ свойствС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнта с Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ
    • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollectionItemValue - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнта с Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ
    • \Leonied7\Yandex\Disk\Decorator\CurrentElementFailCollection - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ элСмСнта с Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Ρ‘ΠΌ
    • \Leonied7\Yandex\Disk\Decorator\ExplodeData - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ‚ΡƒΡŽ строку Π½Π° массив Ρ‚ΠΈΠΏΠ° "ΠΊΠ»ΡŽΡ‡ => Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"
  • \Leonied7\Yandex\Disk\Model\Stream
    • \Leonied7\Yandex\Disk\Stream\File - осущСствляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для записи/чтСния Ρ„Π°ΠΉΠ»Π°

ИспользованиС

Запрос ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅

$info = $yandexDisk->getInfo();
//Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Array
(
    [uid] => xxxxxxxxx
    [login] => login
    [fio] => fio
    [firstname] => firstname
    [lastname] => lastname
    [upload_concurrency] => 5
    [datasync_db_prefix] => 
    [is_b2b] => false
)

Запрос свободного/занятого мСста

/** @var \Leonied7\Yandex\Disk\Collection\PropertyCollection $spaceCollection */
$spaceCollection = $yandexDisk->spaceInfo();
//поиск Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ свойство с ΠΈΠΌΠ΅Π½Π΅Π½Π΅ΠΌ 'quota-available-bytes'
/** @var \Leonied7\Yandex\Disk\Property\Immutable $available */
$available = $spaceCollection->find('quota-available-bytes');
echo $available->getValue(); //свободноС мСста

/** @var \Leonied7\Yandex\Disk\Property\Immutable $used */
$used = $spaceCollection->find('quota-used-bytes');
echo $used->getValue(); //занятоС мСста

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ²)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->upload(new Disk\Stream\File('/path/to/local/file', Disk\Stream\File::MODE_READ)); //bool

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ²)

SDK ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ скачиваниС Ρ„Π°ΠΉΠ»ΠΎΠ² нСсколькими способами: 1. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ скачиваниС, (*11)

```php
/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->download(new Disk\Stream\File('/path/to/local/file', Disk\Stream\File::MODE_WRITE)); //bool
```

2. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ скачиваниС частями, (*12)

```php
/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
//скачиваниС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 5 Π±Π°ΠΉΡ‚
$file->download(new Disk\Stream\File('/path/to/local/file', Disk\Stream\File::MODE_WRITE), 0, 5); //bool
//скачиваниС с 6 Π±Π°ΠΉΡ‚Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° 
$file->download(new Disk\Stream\File('/path/to/local/file', Disk\Stream\File::MODE_WRITE_APPEND), 6); //bool
```

3. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡ‚ΠΎΠΊΠ°, (*13)

```php
/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->download(); //bool
// ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ послСднСго Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса
$result = Disk\Collection\ResultList::getInstance()->getLast();
file_put_contents('/path/to/local/file', $result->getActualResult());
```

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π²ΡŒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ²)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ пСрСдаётся Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€Π΅Π²ΡŒΡŽ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ любой ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, (*14)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->getPreview('S', new Disk\Stream\File('/path/to/local/file/', Disk\Stream\File::MODE_WRITE));

ΠŸΡ€Π΅Π²ΡŒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Π»ΠΈΠ±ΠΎ Π±Π΅Π· ΠΏΠΎΡ‚ΠΎΠΊΠ°, (*15)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ)

/** @var Disk\Item\Directory $directory */
$directory = $yandexDisk->directory('/path/to/directory/');
$directory->create(); // bool

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ)

/** @var Disk\Item\Directory $directory */
$directory = $yandexDisk->directory('/path/to/directory/');
/** @var Disk\Item\Item[] $arChild */
$arChild = $directory->getChildren();
/** @var Disk\Item\Item $child */
foreach ($arChild as $child) {
    if ($child->isDirectory()) {
        /** @var Disk\Item\Directory $directory */
        $directory = $child;
        //Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ
    } else {
        /** @var Disk\Item\File $file */
        $file = $child;
        //Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠΌ
    }
}

Π’Π°ΠΊ ΠΆΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° \Leonied7\Yandex\Disk\Collection\PropertyCollection для получСния свойств для всСх элСмСнтов., (*16)

Π’Π°ΠΊ ΠΆΠ΅ 2 ΠΈ 3 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ offset(смСщСниС) ΠΈ amount(количСство) - для ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π° элСмСнтов., (*17)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*18)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->has(); // bool

Π’Π°ΠΊ ΠΊΠ°ΠΊ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сущСствования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ запроса свойств, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ЯндСкс.Диск ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ свойства. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° has() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° \Leonied7\Yandex\Disk\Collection\PropertyCollection., (*19)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*20)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$collection = new Disk\Collection\PropertyCollection();
$collection
    ->add('getcontenttype', Disk\Model\Property::IMMUTABLE_NAMESPACES['dav']) //запрос Ρ‚ΠΈΠΏΠ° содСрТимого
    ->add('displayname', Disk\Model\Property::IMMUTABLE_NAMESPACES['dav']) //запрос ΠΈΠΌΠ΅Π½ΠΈ содСрТимого
    ->add('myprop', 'mynamespace'); //получСнис своСго свойства
$file->has($collection); // bool

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ пСрСдаётся, Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ всС доступныС свойства автоматичСски., (*21)

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ свойства ΠΌΠΎΠΆΠ½ΠΎ слСдущим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:, (*22)

/** @var Disk\Collection\PropertyCollection $collection */
$collection = $file->getProperties();

ΠΈΠ»ΠΈ, (*23)

/** @var Disk\Collection\PropertyCollection $collection */
$collection1 = Disk\Collection\ResultList::getInstance()->getLast()->getResult();

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ свойства., (*24)

Для получСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… свойств, (*25)

/** @var Disk\Collection\PropertyFail[] $failCollections */
$failCollections = Disk\Collection\ResultList::getInstance()->getLast()->getDecorateResult(new Disk\Decorator\CurrentElementFailCollection($file->getPath()));
foreach ($failCollections as $failCollection) {
    $failCollection->getStatus(); //ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статуса ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ ЯндСкс.Диска для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
    //Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‡Ρ‚ΠΎ ΠΈ для Disk\Property\Immutable
}

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*26)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->copy('/path/to/copy/'); // bool

По стандарту Ссли Ρ„Π°ΠΉΠ» ΡƒΠΆΠ΅ сущСствуСт ΠΏΠΎ назначСния, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан. Для Π·Π°ΠΏΡ€Π΅Ρ‚Π° пСрСзаписи, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ false, (*27)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*28)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->move('/path/to/move/'); // bool

По стандарту Ссли Ρ„Π°ΠΉΠ» ΡƒΠΆΠ΅ сущСствуСт ΠΏΠΎ назначСния, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан. Для Π·Π°ΠΏΡ€Π΅Ρ‚Π° пСрСзаписи, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ false, (*29)

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*30)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->delete(); // bool

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° свойств элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*31)

/** @var \Yandex\Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
//создаём ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ добавляСм Π² Π½Π΅Ρ‘ 3 свойства
$propertyCollection = new \Yandex\Disk\Collection\Property();
$propertyCollection
    ->add('myprop', 'mynamespace')
    ->add('propmy', 'mynamespace')
    ->add('propprop', 'mynamespace');

/** @var \Yandex\Disk\Collection\Property $loadCollection */
$loadCollection = $file->loadProperties($propertyCollection);
/** @var \Yandex\Disk\Collection\Property $property */
foreach ($loadCollection as $property) {
    // Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ со свойствами
}

Π Π°Π½Π΅Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ свойства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $file->getProperties();, (*32)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ свойства., (*33)

Для получСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… свойств, (*34)

/** @var \Yandex\Disk\Collection\PropertyFail[] $convertedResult */
$failCollections = $file->getLastResult()->getDecorateResult(new \Yandex\Disk\Decorator\CurrentElementFailCollection($file->getPath()));
foreach ($failCollections as $failCollection) {
    $failCollection->getStatus() //ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статуса ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ ЯндСкс.Диска
}

ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ \Leonied7\Yandex\Disk\Collection\PropertyFail, (*35)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… свойств (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*36)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
/** @var Disk\Collection\PropertyCollection $propertyCollection */
$propertyCollection = $file->getExistProperties();

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!!! свойства приходят Π±Π΅Π· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· $file->getProperties();, (*37)

ИзмСнСниС свойства элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*38)

Π•ΡΡ‚ΡŒ Π΄Π²Π° способа измСнСния свойств Ρƒ элСмСнта: 1. ИзмСнСниС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… свойств, (*39)

ДобавляСм свойства `myprop` ΠΈ `propmy` с namespace `mynamespace` значСния `foo` ΠΈ `bar` соотвСтствСнно. УдаляСм свойство `propprop`
```php
/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$propertyCollection = new Disk\Collection\PropertyCollection();
$propertyCollection
    ->add('myprop', 'mynamespace', 'foo')
    ->add('propmy', 'mynamespace', 'bar')
    ->add('propprop', 'mynamespace');

$file->changeProperties($propertyCollection); // bool
```

2. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… свойств, (*40)

> НСимСняСмыС свойства Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ свойства `myprop`, `propmy`, `propprop`, `quota-available-bytes`
```php
/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$propertyCollection = new Disk\Collection\PropertyCollection();
$propertyCollection
    ->add('myprop', 'mynamespace')
    ->add('propmy', 'mynamespace')
    ->add('quota-available-bytes', Disk\Model\Property::IMMUTABLE_NAMESPACES['dav'])
    ->add('propprop', 'mynamespace');

/** @var Disk\Collection\PropertyCollection $loadCollection */
$loadCollection = $file->loadProperties($propertyCollection);
```

Π’ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ свойства Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ², измСняСмыС ΠΈ нСимСняСмыС
> Бвойства приходят нСизмСняСмыми для встроСнных свойств ЯндСкс.Диска. НапримСр `quota-available-bytes` Π±ΡƒΠ΄Π΅Ρ‚ нСизмСняСмым

Для получСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСняСмых свойств ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
```php
/** @var Disk\Property\Mutable $property */
foreach ($loadCollection->getChangeable() as $property) {
    $property->setValue('baz'); //устанавливаСм Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
}
```
> Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свойтво Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρƒ свойства `canChanged()`
```php
// добавляСм Π½ΠΎΠ²ΠΎΠ΅ свойство
$loadCollection->add('newprop', 'mynamespace', 'bar');
// добавляСм нСизмСняСмоС свойств (свойство Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сохранятся)
$loadCollection->add('immutable', Disk\Model\Property::IMMUTABLE_NAMESPACES['dav'], 'immut');
```

ПослС этого сохраняСм ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ значСния
```php
$file->saveProperties();
```

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*41)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->startPublish(); // bool
//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ ссылки
Disk\Collection\ResultList::getInstance()->getLast()->getResult(); // string

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*42)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->stopPublish(); // bool

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ элСмСнта (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для Ρ„Π°ΠΉΠ»Π°/Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ написан для Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*43)

/** @var Disk\Item\File $file */
$file = $yandexDisk->file('/path/to/file/');
$file->checkPublish(); // bool
//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ ссылки
Disk\Collection\ResultList::getInstance()->getLast()->getResult(); // string

The Versions

26/04 2017

dev-depelop

dev-depelop

  Sources   Download

MIT

The Requires

 

by Avatar leonied7

18/04 2017

dev-master

9999999-dev

  Sources   Download

MIT

The Requires

 

by Avatar leonied7

18/04 2017

2.0.0

2.0.0.0

  Sources   Download

MIT

The Requires

 

by Avatar leonied7