From cdffac64a7c75f1149a8b1456cf8e446a90a7726 Mon Sep 17 00:00:00 2001 From: Daniel Wesson <danielwesson@MacBook-Air-Daniel.local> Date: Mon, 7 Mar 2022 14:30:46 +0300 Subject: [PATCH 1/3] Remove illuminate/support package --- .gitignore | 3 +- composer.json | 11 +- src/AmoCRM/Collections/BaseApiCollection.php | 2 +- src/AmoCRM/Contracts/Support/Arrayable.php | 13 +++ .../Models/AccountSettings/AmojoRights.php | 2 +- .../AccountSettings/DateTimeSettings.php | 2 +- .../AccountSettings/InvoicesSettings.php | 2 +- .../Models/AccountSettings/TaskType.php | 2 +- .../Models/AccountSettings/UsersGroup.php | 2 +- src/AmoCRM/Models/BaseApiModel.php | 2 +- .../Templates/Buttons/AbstractButtonModel.php | 2 +- src/AmoCRM/Models/CustomFields/EnumModel.php | 2 +- .../Models/CustomFields/NestedModel.php | 2 +- .../CustomFields/RequiredStatusModel.php | 2 +- .../Models/Customers/Statuses/StatusModel.php | 2 +- .../Models/Leads/Pipelines/PipelineModel.php | 2 +- .../Leads/Pipelines/Statuses/StatusModel.php | 2 +- src/AmoCRM/Models/NoteModel.php | 2 +- src/AmoCRM/Models/SourceModel.php | 2 +- .../Models/Sources/SourceServiceModel.php | 2 +- .../Models/Sources/SourceServicePageModel.php | 2 +- src/AmoCRM/Models/TagModel.php | 2 +- .../Models/Unsorted/AcceptUnsortedModel.php | 2 +- src/AmoCRM/Models/Unsorted/ChatsMetadata.php | 2 +- .../Models/Unsorted/DeclineUnsortedModel.php | 2 +- src/AmoCRM/Models/Unsorted/FormsMetadata.php | 2 +- .../Models/Unsorted/LinkUnsortedModel.php | 2 +- src/AmoCRM/Models/Unsorted/MailMetadata.php | 2 +- src/AmoCRM/Models/Unsorted/SipMetadata.php | 2 +- .../Models/Unsorted/UnsortedSummaryModel.php | 2 +- .../Models/Widgets/SettingTemplateModel.php | 2 +- src/AmoCRM/Support/Str.php | 106 ++++++++++++++++++ .../AmoCRM/Client/AmoCRMApiClientTest.php | 2 +- .../Cases/AmoCRM/Filters/LeadsFilterTest.php | 2 +- 34 files changed, 157 insertions(+), 36 deletions(-) create mode 100644 src/AmoCRM/Contracts/Support/Arrayable.php create mode 100644 src/AmoCRM/Support/Str.php diff --git a/.gitignore b/.gitignore index d668d31b..1a7d94c4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ vendor/ composer.phar composer.lock .idea -examples/.env \ No newline at end of file +examples/.env +.phpunit.result.cache diff --git a/composer.json b/composer.json index 726668e7..86e95890 100644 --- a/composer.json +++ b/composer.json @@ -19,11 +19,10 @@ "amocrm" ], "require": { - "php": ">=7.1", + "php": ">=7.1 || >=8.0", "ext-json": "*", "amocrm/oauth2-amocrm": "^2.0", - "guzzlehttp/guzzle": "6.* || 7.*", - "illuminate/support": "5.* || 6.* || 7.* || 8.*", + "guzzlehttp/guzzle": "^7.2", "symfony/dotenv": "3.* || 4.* || 5.* || 6.*", "fig/http-message-util": "1.*", "ramsey/uuid": "^3 || ^4", @@ -31,7 +30,7 @@ "nesbot/carbon": "^2.52" }, "require-dev": { - "phpunit/phpunit": "7.*.*", + "phpunit/phpunit": "^9.5.10", "squizlabs/php_codesniffer": "3.5.*" }, "autoload": { @@ -45,7 +44,9 @@ "AmoCRM\\Models\\": "src/AmoCRM/Models", "AmoCRM\\Collections\\": "src/AmoCRM/Collections", "AmoCRM\\Filters\\": "src/AmoCRM/Filters", - "AmoCRM\\Helpers\\": "src/AmoCRM/Helpers" + "AmoCRM\\Helpers\\": "src/AmoCRM/Helpers", + "AmoCRM\\Contracts\\": "src/AmoCRM/Contracts", + "AmoCRM\\Support\\": "src/AmoCRM/Support" } }, "scripts": { diff --git a/src/AmoCRM/Collections/BaseApiCollection.php b/src/AmoCRM/Collections/BaseApiCollection.php index 9b08abf6..95d5b02e 100644 --- a/src/AmoCRM/Collections/BaseApiCollection.php +++ b/src/AmoCRM/Collections/BaseApiCollection.php @@ -5,7 +5,7 @@ use AmoCRM\Models\BaseApiModel; use ArrayAccess; use ArrayIterator; -use Illuminate\Support\Str; +use AmoCRM\Support\Str; use InvalidArgumentException; use IteratorAggregate; use JsonSerializable; diff --git a/src/AmoCRM/Contracts/Support/Arrayable.php b/src/AmoCRM/Contracts/Support/Arrayable.php new file mode 100644 index 00000000..1bdf458a --- /dev/null +++ b/src/AmoCRM/Contracts/Support/Arrayable.php @@ -0,0 +1,13 @@ +<?php + +namespace AmoCRM\Contracts\Support; + +interface Arrayable +{ + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray(); +} diff --git a/src/AmoCRM/Models/AccountSettings/AmojoRights.php b/src/AmoCRM/Models/AccountSettings/AmojoRights.php index 94ca2c99..7215e58f 100644 --- a/src/AmoCRM/Models/AccountSettings/AmojoRights.php +++ b/src/AmoCRM/Models/AccountSettings/AmojoRights.php @@ -2,7 +2,7 @@ namespace AmoCRM\Models\AccountSettings; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class AmojoRights implements Arrayable { diff --git a/src/AmoCRM/Models/AccountSettings/DateTimeSettings.php b/src/AmoCRM/Models/AccountSettings/DateTimeSettings.php index 3ef6c14f..b5e94051 100644 --- a/src/AmoCRM/Models/AccountSettings/DateTimeSettings.php +++ b/src/AmoCRM/Models/AccountSettings/DateTimeSettings.php @@ -2,7 +2,7 @@ namespace AmoCRM\Models\AccountSettings; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class DateTimeSettings implements Arrayable { diff --git a/src/AmoCRM/Models/AccountSettings/InvoicesSettings.php b/src/AmoCRM/Models/AccountSettings/InvoicesSettings.php index f5548bfd..3156382c 100644 --- a/src/AmoCRM/Models/AccountSettings/InvoicesSettings.php +++ b/src/AmoCRM/Models/AccountSettings/InvoicesSettings.php @@ -2,7 +2,7 @@ namespace AmoCRM\Models\AccountSettings; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class InvoicesSettings implements Arrayable { diff --git a/src/AmoCRM/Models/AccountSettings/TaskType.php b/src/AmoCRM/Models/AccountSettings/TaskType.php index bf5d7ac9..333d1d9f 100644 --- a/src/AmoCRM/Models/AccountSettings/TaskType.php +++ b/src/AmoCRM/Models/AccountSettings/TaskType.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\AccountSettings; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class TaskType extends BaseApiModel implements Arrayable { diff --git a/src/AmoCRM/Models/AccountSettings/UsersGroup.php b/src/AmoCRM/Models/AccountSettings/UsersGroup.php index 48c2519b..6642c06e 100644 --- a/src/AmoCRM/Models/AccountSettings/UsersGroup.php +++ b/src/AmoCRM/Models/AccountSettings/UsersGroup.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\AccountSettings; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class UsersGroup extends BaseApiModel implements Arrayable { diff --git a/src/AmoCRM/Models/BaseApiModel.php b/src/AmoCRM/Models/BaseApiModel.php index 569fb260..da2b2695 100644 --- a/src/AmoCRM/Models/BaseApiModel.php +++ b/src/AmoCRM/Models/BaseApiModel.php @@ -2,7 +2,7 @@ namespace AmoCRM\Models; -use Illuminate\Support\Str; +use AmoCRM\Support\Str; use function is_callable; diff --git a/src/AmoCRM/Models/Chats/Templates/Buttons/AbstractButtonModel.php b/src/AmoCRM/Models/Chats/Templates/Buttons/AbstractButtonModel.php index 4e4af6e0..76ec8be1 100644 --- a/src/AmoCRM/Models/Chats/Templates/Buttons/AbstractButtonModel.php +++ b/src/AmoCRM/Models/Chats/Templates/Buttons/AbstractButtonModel.php @@ -7,7 +7,7 @@ use AmoCRM\Enum\Chats\Templates\Buttons\ButtonsEnums; use AmoCRM\Exceptions\InvalidArgumentException; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; /** * Class AbstractButtonModel diff --git a/src/AmoCRM/Models/CustomFields/EnumModel.php b/src/AmoCRM/Models/CustomFields/EnumModel.php index c81b3f8b..80f48f9c 100644 --- a/src/AmoCRM/Models/CustomFields/EnumModel.php +++ b/src/AmoCRM/Models/CustomFields/EnumModel.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\CustomFields; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; /** * Class EnumModel diff --git a/src/AmoCRM/Models/CustomFields/NestedModel.php b/src/AmoCRM/Models/CustomFields/NestedModel.php index ce91a253..b98d71a9 100644 --- a/src/AmoCRM/Models/CustomFields/NestedModel.php +++ b/src/AmoCRM/Models/CustomFields/NestedModel.php @@ -4,7 +4,7 @@ use AmoCRM\Exceptions\InvalidArgumentException; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; use function is_null; use function preg_match; diff --git a/src/AmoCRM/Models/CustomFields/RequiredStatusModel.php b/src/AmoCRM/Models/CustomFields/RequiredStatusModel.php index 5f7cfd5f..cab9ccec 100644 --- a/src/AmoCRM/Models/CustomFields/RequiredStatusModel.php +++ b/src/AmoCRM/Models/CustomFields/RequiredStatusModel.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\CustomFields; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; /** * Class RequiredStatusModel diff --git a/src/AmoCRM/Models/Customers/Statuses/StatusModel.php b/src/AmoCRM/Models/Customers/Statuses/StatusModel.php index f6038ee7..11970e84 100644 --- a/src/AmoCRM/Models/Customers/Statuses/StatusModel.php +++ b/src/AmoCRM/Models/Customers/Statuses/StatusModel.php @@ -5,7 +5,7 @@ use AmoCRM\Models\BaseApiModel; use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class StatusModel extends BaseApiModel implements Arrayable, HasIdInterface { diff --git a/src/AmoCRM/Models/Leads/Pipelines/PipelineModel.php b/src/AmoCRM/Models/Leads/Pipelines/PipelineModel.php index a5001fca..184f6778 100644 --- a/src/AmoCRM/Models/Leads/Pipelines/PipelineModel.php +++ b/src/AmoCRM/Models/Leads/Pipelines/PipelineModel.php @@ -9,7 +9,7 @@ use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Leads\Pipelines\Statuses\StatusModel; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class PipelineModel extends BaseApiModel implements Arrayable, HasIdInterface { diff --git a/src/AmoCRM/Models/Leads/Pipelines/Statuses/StatusModel.php b/src/AmoCRM/Models/Leads/Pipelines/Statuses/StatusModel.php index 95cb90e4..66f2d519 100644 --- a/src/AmoCRM/Models/Leads/Pipelines/Statuses/StatusModel.php +++ b/src/AmoCRM/Models/Leads/Pipelines/Statuses/StatusModel.php @@ -5,7 +5,7 @@ use AmoCRM\Models\BaseApiModel; use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class StatusModel extends BaseApiModel implements Arrayable, HasIdInterface { diff --git a/src/AmoCRM/Models/NoteModel.php b/src/AmoCRM/Models/NoteModel.php index 3b429564..bfbd0b5f 100644 --- a/src/AmoCRM/Models/NoteModel.php +++ b/src/AmoCRM/Models/NoteModel.php @@ -5,7 +5,7 @@ use AmoCRM\Models\Factories\NoteFactory; use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; /** * Class NoteModel diff --git a/src/AmoCRM/Models/SourceModel.php b/src/AmoCRM/Models/SourceModel.php index 26d2372f..7c189780 100644 --- a/src/AmoCRM/Models/SourceModel.php +++ b/src/AmoCRM/Models/SourceModel.php @@ -5,7 +5,7 @@ use AmoCRM\Collections\Sources\SourceServicesCollection; use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class SourceModel extends BaseApiModel implements Arrayable, HasIdInterface { diff --git a/src/AmoCRM/Models/Sources/SourceServiceModel.php b/src/AmoCRM/Models/Sources/SourceServiceModel.php index d2bc6ae3..a9a7fed9 100644 --- a/src/AmoCRM/Models/Sources/SourceServiceModel.php +++ b/src/AmoCRM/Models/Sources/SourceServiceModel.php @@ -4,7 +4,7 @@ use AmoCRM\Collections\Sources\SourceServicesPagesCollection; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class SourceServiceModel extends BaseApiModel implements Arrayable { diff --git a/src/AmoCRM/Models/Sources/SourceServicePageModel.php b/src/AmoCRM/Models/Sources/SourceServicePageModel.php index 94fce830..82311882 100644 --- a/src/AmoCRM/Models/Sources/SourceServicePageModel.php +++ b/src/AmoCRM/Models/Sources/SourceServicePageModel.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\Sources; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class SourceServicePageModel extends BaseApiModel implements Arrayable { diff --git a/src/AmoCRM/Models/TagModel.php b/src/AmoCRM/Models/TagModel.php index 2b4a9dc8..d0b97bb7 100644 --- a/src/AmoCRM/Models/TagModel.php +++ b/src/AmoCRM/Models/TagModel.php @@ -5,7 +5,7 @@ use AmoCRM\Models\Interfaces\EntityApiInterface; use AmoCRM\Models\Interfaces\HasIdInterface; use AmoCRM\Models\Traits\RequestIdTrait; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class TagModel extends BaseApiModel implements Arrayable, HasIdInterface, EntityApiInterface { diff --git a/src/AmoCRM/Models/Unsorted/AcceptUnsortedModel.php b/src/AmoCRM/Models/Unsorted/AcceptUnsortedModel.php index abef1396..8e12d9a9 100644 --- a/src/AmoCRM/Models/Unsorted/AcceptUnsortedModel.php +++ b/src/AmoCRM/Models/Unsorted/AcceptUnsortedModel.php @@ -6,7 +6,7 @@ use AmoCRM\Collections\CompaniesCollection; use AmoCRM\Collections\ContactsCollection; use AmoCRM\Collections\Leads\LeadsCollection; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; /** * Class AcceptUnsortedModel diff --git a/src/AmoCRM/Models/Unsorted/ChatsMetadata.php b/src/AmoCRM/Models/Unsorted/ChatsMetadata.php index da2c7705..506b2f3a 100644 --- a/src/AmoCRM/Models/Unsorted/ChatsMetadata.php +++ b/src/AmoCRM/Models/Unsorted/ChatsMetadata.php @@ -4,7 +4,7 @@ use AmoCRM\Models\Unsorted\Interfaces\UnsortedMetadataInterface; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class ChatsMetadata extends BaseApiModel implements Arrayable, UnsortedMetadataInterface { diff --git a/src/AmoCRM/Models/Unsorted/DeclineUnsortedModel.php b/src/AmoCRM/Models/Unsorted/DeclineUnsortedModel.php index a9d2ea35..81f6c4c7 100644 --- a/src/AmoCRM/Models/Unsorted/DeclineUnsortedModel.php +++ b/src/AmoCRM/Models/Unsorted/DeclineUnsortedModel.php @@ -6,7 +6,7 @@ use AmoCRM\Collections\CompaniesCollection; use AmoCRM\Collections\ContactsCollection; use AmoCRM\Collections\Leads\LeadsCollection; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class DeclineUnsortedModel implements Arrayable { diff --git a/src/AmoCRM/Models/Unsorted/FormsMetadata.php b/src/AmoCRM/Models/Unsorted/FormsMetadata.php index 770d202b..58623df3 100644 --- a/src/AmoCRM/Models/Unsorted/FormsMetadata.php +++ b/src/AmoCRM/Models/Unsorted/FormsMetadata.php @@ -4,7 +4,7 @@ use AmoCRM\Models\BaseApiModel; use AmoCRM\Models\Unsorted\Interfaces\UnsortedMetadataInterface; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; use function array_key_exists; use function is_null; diff --git a/src/AmoCRM/Models/Unsorted/LinkUnsortedModel.php b/src/AmoCRM/Models/Unsorted/LinkUnsortedModel.php index fedcecb1..b3db8a0b 100644 --- a/src/AmoCRM/Models/Unsorted/LinkUnsortedModel.php +++ b/src/AmoCRM/Models/Unsorted/LinkUnsortedModel.php @@ -6,7 +6,7 @@ use AmoCRM\Collections\CompaniesCollection; use AmoCRM\Collections\ContactsCollection; use AmoCRM\Collections\Leads\LeadsCollection; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class LinkUnsortedModel implements Arrayable { diff --git a/src/AmoCRM/Models/Unsorted/MailMetadata.php b/src/AmoCRM/Models/Unsorted/MailMetadata.php index 97920db3..f21b7635 100644 --- a/src/AmoCRM/Models/Unsorted/MailMetadata.php +++ b/src/AmoCRM/Models/Unsorted/MailMetadata.php @@ -4,7 +4,7 @@ use AmoCRM\Models\Unsorted\Interfaces\UnsortedMetadataInterface; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class MailMetadata extends BaseApiModel implements Arrayable, UnsortedMetadataInterface { diff --git a/src/AmoCRM/Models/Unsorted/SipMetadata.php b/src/AmoCRM/Models/Unsorted/SipMetadata.php index 020c8c2d..44b044fd 100644 --- a/src/AmoCRM/Models/Unsorted/SipMetadata.php +++ b/src/AmoCRM/Models/Unsorted/SipMetadata.php @@ -4,7 +4,7 @@ use AmoCRM\Models\Unsorted\Interfaces\UnsortedMetadataInterface; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; use function is_scalar; diff --git a/src/AmoCRM/Models/Unsorted/UnsortedSummaryModel.php b/src/AmoCRM/Models/Unsorted/UnsortedSummaryModel.php index 9006bde4..0c762cac 100644 --- a/src/AmoCRM/Models/Unsorted/UnsortedSummaryModel.php +++ b/src/AmoCRM/Models/Unsorted/UnsortedSummaryModel.php @@ -2,7 +2,7 @@ namespace AmoCRM\Models\Unsorted; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class UnsortedSummaryModel implements Arrayable { diff --git a/src/AmoCRM/Models/Widgets/SettingTemplateModel.php b/src/AmoCRM/Models/Widgets/SettingTemplateModel.php index f531b2a3..8689faeb 100644 --- a/src/AmoCRM/Models/Widgets/SettingTemplateModel.php +++ b/src/AmoCRM/Models/Widgets/SettingTemplateModel.php @@ -3,7 +3,7 @@ namespace AmoCRM\Models\Widgets; use AmoCRM\Models\BaseApiModel; -use Illuminate\Contracts\Support\Arrayable; +use AmoCRM\Contracts\Support\Arrayable; class SettingTemplateModel extends BaseApiModel implements Arrayable { diff --git a/src/AmoCRM/Support/Str.php b/src/AmoCRM/Support/Str.php new file mode 100644 index 00000000..0122d528 --- /dev/null +++ b/src/AmoCRM/Support/Str.php @@ -0,0 +1,106 @@ +<?php + +namespace AmoCRM\Support; + +class Str +{ + /** + * The cache of camel-cased words. + * + * @var array + */ + protected static $camelCache = []; + + /** + * The cache of studly-cased words. + * + * @var array + */ + protected static $studlyCache = []; + + /** + * Convert the given string to upper-case. + * + * @param string $value + * @return string + */ + public static function upper($value) + { + return mb_strtoupper($value, 'UTF-8'); + } + + /** + * Returns the portion of the string specified by the start and length parameters. + * + * @param string $string + * @param int $start + * @param int|null $length + * @return string + */ + public static function substr($string, $start, $length = null) + { + return mb_substr($string, $start, $length, 'UTF-8'); + } + + /** + * Make a string's first character uppercase. + * + * @param string $string + * @return string + */ + public static function ucfirst($string) + { + return static::upper(static::substr($string, 0, 1)).static::substr($string, 1); + } + + /** + * Convert a value to studly caps case. + * + * @param string $value + * @return string + */ + public static function studly($value) + { + $key = $value; + + if (isset(static::$studlyCache[$key])) { + return static::$studlyCache[$key]; + } + + $words = explode(' ', static::replace(['-', '_'], ' ', $value)); + + $studlyWords = array_map(function ($word) { + return static::ucfirst($word); + }, $words); + + return static::$studlyCache[$key] = implode($studlyWords); + } + + /** + * Convert a value to camel case. + * + * @param string $value + * @return string + */ + public static function camel($value) + { + if (isset(static::$camelCache[$value])) { + return static::$camelCache[$value]; + } + + return static::$camelCache[$value] = lcfirst(static::studly($value)); + } + + /** + * Replace the given value in the given string. + * + * @param string|string[] $search + * @param string|string[] $replace + * @param string|string[] $subject + * @return string + */ + public static function replace($search, $replace, $subject) + { + return str_replace($search, $replace, $subject); + } +} diff --git a/tests/Cases/AmoCRM/Client/AmoCRMApiClientTest.php b/tests/Cases/AmoCRM/Client/AmoCRMApiClientTest.php index 7576c528..a2d2eb79 100644 --- a/tests/Cases/AmoCRM/Client/AmoCRMApiClientTest.php +++ b/tests/Cases/AmoCRM/Client/AmoCRMApiClientTest.php @@ -38,7 +38,7 @@ class AmoCRMApiClientTest extends TestCase */ private $apiClient; - public function setUp() + public function setUp(): void { $this->apiClient = new AmoCRMApiClient('xxx', 'xxx', 'xxx'); $this->apiClient->setAccessToken(new AccessToken([ diff --git a/tests/Cases/AmoCRM/Filters/LeadsFilterTest.php b/tests/Cases/AmoCRM/Filters/LeadsFilterTest.php index 4275af3e..8c1f45ea 100644 --- a/tests/Cases/AmoCRM/Filters/LeadsFilterTest.php +++ b/tests/Cases/AmoCRM/Filters/LeadsFilterTest.php @@ -11,7 +11,7 @@ class LeadsFilterTest extends TestCase */ private $leadsFilter; - public function setUp() + public function setUp(): void { $this->leadsFilter = new LeadsFilter(); } From 44f20914c173d8aba400e01069cb54e9254b720a Mon Sep 17 00:00:00 2001 From: Daniel Wischerdson <wischerdson@gmail.com> Date: Fri, 18 Mar 2022 22:07:24 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9=20composer?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 86e95890..069a9cfa 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "php": ">=7.1 || >=8.0", "ext-json": "*", "amocrm/oauth2-amocrm": "^2.0", - "guzzlehttp/guzzle": "^7.2", + "guzzlehttp/guzzle": "6.* || 7.*", "symfony/dotenv": "3.* || 4.* || 5.* || 6.*", "fig/http-message-util": "1.*", "ramsey/uuid": "^3 || ^4", @@ -30,7 +30,7 @@ "nesbot/carbon": "^2.52" }, "require-dev": { - "phpunit/phpunit": "^9.5.10", + "phpunit/phpunit": "7.* || 8.* || 9.*", "squizlabs/php_codesniffer": "3.5.*" }, "autoload": { From c0e688e445e106db073fbe18a48f35faba9d5cb6 Mon Sep 17 00:00:00 2001 From: Daniel Wischerdson <wischerdson@gmail.com> Date: Sat, 19 Mar 2022 09:54:56 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B8=20=D1=81=20?= =?UTF-8?q?=D0=BB=D0=B8=D0=BD=D1=82=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/AmoCRM/Support/Str.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/AmoCRM/Support/Str.php b/src/AmoCRM/Support/Str.php index 0122d528..b98376e3 100644 --- a/src/AmoCRM/Support/Str.php +++ b/src/AmoCRM/Support/Str.php @@ -4,21 +4,21 @@ class Str { - /** + /** * The cache of camel-cased words. * * @var array */ protected static $camelCache = []; - /** + /** * The cache of studly-cased words. * * @var array */ protected static $studlyCache = []; - /** + /** * Convert the given string to upper-case. * * @param string $value @@ -29,7 +29,7 @@ public static function upper($value) return mb_strtoupper($value, 'UTF-8'); } - /** + /** * Returns the portion of the string specified by the start and length parameters. * * @param string $string @@ -42,7 +42,7 @@ public static function substr($string, $start, $length = null) return mb_substr($string, $start, $length, 'UTF-8'); } - /** + /** * Make a string's first character uppercase. * * @param string $string @@ -50,10 +50,10 @@ public static function substr($string, $start, $length = null) */ public static function ucfirst($string) { - return static::upper(static::substr($string, 0, 1)).static::substr($string, 1); + return static::upper(static::substr($string, 0, 1)) . static::substr($string, 1); } - /** + /** * Convert a value to studly caps case. * * @param string $value @@ -76,7 +76,7 @@ public static function studly($value) return static::$studlyCache[$key] = implode($studlyWords); } - /** + /** * Convert a value to camel case. * * @param string $value @@ -91,7 +91,7 @@ public static function camel($value) return static::$camelCache[$value] = lcfirst(static::studly($value)); } - /** + /** * Replace the given value in the given string. * * @param string|string[] $search