diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..57872d0f1e5f46731396e93c4e22b149809798f8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vendor/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..26f61436231b836294e3873ece383ed5da4d5141 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/patterns.iml" filepath="$PROJECT_DIR$/.idea/patterns.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/patterns.iml b/.idea/patterns.iml new file mode 100644 index 0000000000000000000000000000000000000000..365be24e63a252ed3c4b986a362229292a2c4afd --- /dev/null +++ b/.idea/patterns.iml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="Hp\Patterns\" /> + <excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a4f333ed8c563180a8fb415aeb1daddddc6dd94 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MessDetectorOptionsConfiguration"> + <option name="transferred" value="true" /> + </component> + <component name="PHPCSFixerOptionsConfiguration"> + <option name="transferred" value="true" /> + </component> + <component name="PHPCodeSnifferOptionsConfiguration"> + <option name="highlightLevel" value="WARNING" /> + <option name="transferred" value="true" /> + </component> + <component name="PhpIncludePathManager"> + <include_path> + <path value="$PROJECT_DIR$/vendor/composer" /> + </include_path> + </component> + <component name="PhpProjectSharedConfiguration" php_language_level="8.3" /> + <component name="PhpStanOptionsConfiguration"> + <option name="transferred" value="true" /> + </component> + <component name="PsalmOptionsConfiguration"> + <option name="transferred" value="true" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 new file mode 100644 index 0000000000000000000000000000000000000000..f5f575f325fdbd6a27a820f10fa580639a19f631 --- /dev/null +++ b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 @@ -0,0 +1,2 @@ + +§ php:S1488 "`Immediately return this expression instead of assigning it to the temporary variable "$account".(©Ÿ§Åúÿÿÿÿ8¶°‹ò2J$3d3cfc97-789f-461a-bb60-8a34722ec00c \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 new file mode 100644 index 0000000000000000000000000000000000000000..a6c84282b75da1ca96879446d2c58201e0da9bed --- /dev/null +++ b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 @@ -0,0 +1,3 @@ + +p php:S1068 ")Remove this unused "$date" private field.(òØô”üÿÿÿÿ8‹¬Àð2J$0c0a033e-1ff4-40bd-b40b-abfcc293c20f +r php:S1068"+Remove this unused "$amount" private field.(èÀ‘ðüÿÿÿÿ8‹¬Àð2J$f3de3300-a9eb-4494-905d-cadc131cc062 \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb new file mode 100644 index 0000000000000000000000000000000000000000..977e4b8d75981006b0d8579b2bbd65676e06bf3c --- /dev/null +++ b/.idea/sonarlint/issuestore/index.pb @@ -0,0 +1,352 @@ + +9 + README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +: + +.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302 += + composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897 +L +src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98 +W +'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd +U +%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044 +V +&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b +9 + index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7 +O +src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f +V +&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5 +Q +!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca +M +src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8 +S +#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7 +R +"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67 +Q +!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094 +[ ++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d +Z +*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d +[ ++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a +^ +.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 +\ +,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196 +] +-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee +G +src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30 +H +src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 +O +src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 +T +$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93 +F +src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3 +G +src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82 +E +src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b +G +src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1 +K +src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842 +P + src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f +S +#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03 +F +src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767 +I +src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022 +K +src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca +D +src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860 +E +src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e +G +src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e +N +src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318 +P + src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2 +U +%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc +N +src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e +E +src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7 +F +src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e +H +src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4 +L +src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b +E +src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51 +G +src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805 +N +src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f +H +src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556 +F +src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c +E +src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac +M +src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7 +I +src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7 +R +"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0 +P + src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d +B +src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 +E +src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6 +J +src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432 +Q +!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53 +O +src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736 +P + src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b +V +&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749 +W +'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99 + +Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb +w +G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e + +Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37 + +Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842 + +Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411 + +Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d +w +G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a +w +G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d + +Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794 + +Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554 +w +G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95 + +Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5 + +Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c +w +G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404 + +Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680 +w +G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95 + +Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51 + +Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e + +Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9 +w +G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d +S +#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0 + +Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0 +w +G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d +] +-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e + +Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0 +w +G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812 +w +G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3 +w +G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746 +w +G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584 + +Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04 + +Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88 + +Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176 + +Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19 +w +G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec + +Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9 +w +G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28 + +Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e + +Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4 + +Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66 +w +G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564 +w +G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05 +w +G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d +w +G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c + +Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4 + +Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84 + +Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4 + +Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305 + +Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9 + +Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea + +Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f + +Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4 +w +G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf +w +G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7 + +Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366 + +Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7 + +Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c +w +G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61 + +Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e + +Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f +w +G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55 + +Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9 + +Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18 +w +G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693 +w +G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220 +w +G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597 + +Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d +w +G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0 + +Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466 +w +G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88 + +Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19 +w +G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9 + +Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034 + +Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1 + +Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df +w +G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247 +w +G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d +w +G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee + +Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00 +w +G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd +w +G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba + +Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821 + +Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3 +w +G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e + +Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9 + +Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba + +Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda + +Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394 +w +G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa +w +G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2 +w +G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82 + +Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e +w +G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b + +Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa + +Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc + +Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d +w +G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5 + +Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d +w +G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6 +w +G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3 + +Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7 + +Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154 +w +G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72 + +Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6 +w +G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301 + +Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf + +Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5 + +Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69 + +Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090 +w +G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086 + +Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747 +w +G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90 \ No newline at end of file diff --git a/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb new file mode 100644 index 0000000000000000000000000000000000000000..977e4b8d75981006b0d8579b2bbd65676e06bf3c --- /dev/null +++ b/.idea/sonarlint/securityhotspotstore/index.pb @@ -0,0 +1,352 @@ + +9 + README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +: + +.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302 += + composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897 +L +src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98 +W +'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd +U +%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044 +V +&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b +9 + index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7 +O +src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f +V +&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5 +Q +!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca +M +src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8 +S +#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7 +R +"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67 +Q +!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094 +[ ++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d +Z +*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d +[ ++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a +^ +.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 +\ +,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196 +] +-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee +G +src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30 +H +src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 +O +src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 +T +$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93 +F +src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3 +G +src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82 +E +src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b +G +src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1 +K +src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842 +P + src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f +S +#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03 +F +src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767 +I +src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022 +K +src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca +D +src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860 +E +src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e +G +src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e +N +src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318 +P + src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2 +U +%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc +N +src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e +E +src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7 +F +src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e +H +src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4 +L +src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b +E +src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51 +G +src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805 +N +src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f +H +src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556 +F +src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c +E +src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac +M +src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7 +I +src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7 +R +"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0 +P + src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d +B +src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 +E +src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6 +J +src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432 +Q +!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53 +O +src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736 +P + src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b +V +&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749 +W +'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99 + +Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb +w +G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e + +Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37 + +Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842 + +Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411 + +Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d +w +G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a +w +G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d + +Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794 + +Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554 +w +G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95 + +Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5 + +Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c +w +G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404 + +Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680 +w +G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95 + +Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51 + +Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e + +Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9 +w +G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d +S +#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0 + +Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0 +w +G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d +] +-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e + +Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0 +w +G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812 +w +G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3 +w +G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746 +w +G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584 + +Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04 + +Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88 + +Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176 + +Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19 +w +G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec + +Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9 +w +G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28 + +Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e + +Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4 + +Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66 +w +G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564 +w +G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05 +w +G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d +w +G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c + +Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4 + +Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84 + +Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4 + +Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305 + +Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9 + +Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea + +Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f + +Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4 +w +G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf +w +G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7 + +Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366 + +Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7 + +Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c +w +G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61 + +Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e + +Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f +w +G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55 + +Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9 + +Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18 +w +G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693 +w +G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220 +w +G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597 + +Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d +w +G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0 + +Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466 +w +G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88 + +Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19 +w +G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9 + +Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034 + +Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1 + +Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df +w +G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247 +w +G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d +w +G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee + +Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00 +w +G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd +w +G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba + +Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821 + +Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3 +w +G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e + +Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9 + +Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba + +Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda + +Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394 +w +G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa +w +G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2 +w +G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82 + +Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e +w +G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b + +Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa + +Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc + +Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d +w +G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5 + +Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d +w +G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6 +w +G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3 + +Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7 + +Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154 +w +G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72 + +Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6 +w +G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301 + +Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf + +Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5 + +Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69 + +Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090 +w +G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086 + +Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747 +w +G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90 \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..12bb1aafc6104441d959b97004eee12d33ac7ea3 --- /dev/null +++ b/composer.json @@ -0,0 +1,9 @@ +{ + "name": "hp/patterns", + "autoload": { + "psr-4": { + "Hp\\Patterns\\": "src/" + } + }, + "require": {} +} diff --git a/index.php b/index.php new file mode 100644 index 0000000000000000000000000000000000000000..e2880ee1eb4da74aaae97371b03019412d031bb8 --- /dev/null +++ b/index.php @@ -0,0 +1,47 @@ +<?php + +require_once __DIR__ . '/vendor/autoload.php'; + +use Hp\Patterns\Observer\Card; +use Hp\Patterns\Observer\CardObserver; +use Hp\Patterns\ServiceLocator\RegisterService; +use Hp\Patterns\ServiceLocator\ServiceLocator; +use Hp\Patterns\DependencyInjection\CreditCard; +use Hp\Patterns\DependencyInjection\ATM; + + +// Service Locator +$locator = new ServiceLocator(); +$locator->addInstance('RegisterService', new RegisterService(['user1', 'user2'])); + +$service = $locator->get('RegisterService'); + +$service->register('user3'); + +$users = $service->getUsers(); + +foreach ($users as $user) { + echo $user."\n"; +} + +echo "\n"; + +// Dependency Injection + +$card = new CreditCard('1234 5678 9012 3456', 5281.31, 'Иванов Иван Иванович'); +$atm = new ATM($card); + +$atm->getCardInfo(); + +echo "\n"; + +// Observer + +$observer = new CardObserver(); + +$card = new Card(); +$card->attach($observer); + +$card->deposit(1000); + +$observer->getSumUpdatedCards(); diff --git a/src/AbstractFactory/CardFactory.php b/src/AbstractFactory/CardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..51e47fc435abaaf81ce7b92fb6a1e66181cb59e4 --- /dev/null +++ b/src/AbstractFactory/CardFactory.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +interface CardFactory +{ + public function createDebitCard(): DebitCard; + + public function createCreditCard(): CreditCard; +} \ No newline at end of file diff --git a/src/AbstractFactory/CreditCard.php b/src/AbstractFactory/CreditCard.php new file mode 100644 index 0000000000000000000000000000000000000000..f2be451decdca663429e61dbaa9c19fc3ca7548a --- /dev/null +++ b/src/AbstractFactory/CreditCard.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +interface CreditCard +{ + public function pay(float $money): void; +} \ No newline at end of file diff --git a/src/AbstractFactory/DebitCard.php b/src/AbstractFactory/DebitCard.php new file mode 100644 index 0000000000000000000000000000000000000000..2ae1e16c2f90ebf1a7e5c3c93a499747ee17e000 --- /dev/null +++ b/src/AbstractFactory/DebitCard.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +interface DebitCard +{ + public function transfer(float $money): void; + + public function pay(float $money): void; +} \ No newline at end of file diff --git a/src/AbstractFactory/README.md b/src/AbstractFactory/README.md new file mode 100644 index 0000000000000000000000000000000000000000..235fb7713152b3273cfe94939a361570a8d1b559 --- /dev/null +++ b/src/AbstractFactory/README.md @@ -0,0 +1 @@ +ÐбÑÑ‚Ñ€Ð°ÐºÑ‚Ð½Ð°Ñ Ñ„Ð°Ð±Ñ€Ð¸ÐºÐ° - паттерн, предназначенный Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑемейÑтв взаимоÑвÑзанных объектов Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ интерфейÑами без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ñ‹Ñ… типов данных объектов \ No newline at end of file diff --git a/src/AbstractFactory/SberMortgageCreditCard.php b/src/AbstractFactory/SberMortgageCreditCard.php new file mode 100644 index 0000000000000000000000000000000000000000..0a3915c81692e912cb2a0ba24720704f9684535a --- /dev/null +++ b/src/AbstractFactory/SberMortgageCreditCard.php @@ -0,0 +1,16 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class SberMortgageCreditCard implements CreditCard +{ + private float $wallet; + + private float $sberSpasibo; + + public function pay(float $money): void + { + $this->wallet -= $money; + $this->sberSpasibo += $money * 0.0001; + } +} diff --git a/src/AbstractFactory/SberSalaryDebitCard.php b/src/AbstractFactory/SberSalaryDebitCard.php new file mode 100644 index 0000000000000000000000000000000000000000..8423bb161816352900fa5cfc4bc2b48efcf79b97 --- /dev/null +++ b/src/AbstractFactory/SberSalaryDebitCard.php @@ -0,0 +1,21 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class SberSalaryDebitCard implements DebitCard +{ + private float $wallet; + + private float $sberSpasibo; + + public function transfer(float $money): void + { + $this->wallet += $money; + } + + public function pay(float $money): void + { + $this->wallet -= $money; + $this->sberSpasibo += $money * 0.1; + } +} diff --git a/src/AbstractFactory/SberbankCardFactory.php b/src/AbstractFactory/SberbankCardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..de22618d458660244f7252d033d1ee619747ee7a --- /dev/null +++ b/src/AbstractFactory/SberbankCardFactory.php @@ -0,0 +1,17 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class SberbankCardFactory implements CardFactory +{ + + public function createDebitCard(): DebitCard + { + return new SberSalaryDebitCard(); + } + + public function createCreditCard(): CreditCard + { + return new SberMortgageCreditCard(); + } +} diff --git a/src/AbstractFactory/TinkCarLoanCreditCard.php b/src/AbstractFactory/TinkCarLoanCreditCard.php new file mode 100644 index 0000000000000000000000000000000000000000..ffef69591ef21200c72513fdfeafdc1e05e9c5c5 --- /dev/null +++ b/src/AbstractFactory/TinkCarLoanCreditCard.php @@ -0,0 +1,14 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class TinkCarLoanCreditCard implements CreditCard +{ + private float $wallet; + + public function pay(float $money): void + { + $this->wallet -= $money; + $this->wallet += $money * 0.0005; + } +} diff --git a/src/AbstractFactory/TinkStipendDebitCard.php b/src/AbstractFactory/TinkStipendDebitCard.php new file mode 100644 index 0000000000000000000000000000000000000000..913c6074a4b699319c81b4e38a771e62cf15853c --- /dev/null +++ b/src/AbstractFactory/TinkStipendDebitCard.php @@ -0,0 +1,19 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class TinkStipendDebitCard implements DebitCard +{ + private float $wallet; + + public function transfer(float $money): void + { + $this->wallet += $money; + } + + public function pay(float $money): void + { + $this->wallet -= $money; + $this->wallet += $money * 0.05; + } +} \ No newline at end of file diff --git a/src/AbstractFactory/TinkoffCardFactory.php b/src/AbstractFactory/TinkoffCardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..21375734d8447dbd34b4a06ffe5cbced408fcd6f --- /dev/null +++ b/src/AbstractFactory/TinkoffCardFactory.php @@ -0,0 +1,17 @@ +<?php + +namespace Hp\Patterns\AbstractFactory; + +class TinkoffCardFactory implements CardFactory +{ + + public function createDebitCard(): DebitCard + { + return new TinkStipendDebitCard(); + } + + public function createCreditCard(): CreditCard + { + return new TinkCarLoanCreditCard(); + } +} \ No newline at end of file diff --git a/src/Adapter/Account.php b/src/Adapter/Account.php new file mode 100644 index 0000000000000000000000000000000000000000..cda428550b204b0b5d7f5b366fbff83e8bb90655 --- /dev/null +++ b/src/Adapter/Account.php @@ -0,0 +1,18 @@ +<?php + +namespace Hp\Patterns\Adapter; + +class Account implements AccountInterface +{ + private float $amount; + + public function deposit(float $amount): void + { + $this->amount += $amount; + } + + public function withdraw(float $amount): void + { + $this->amount -= $amount; + } +} \ No newline at end of file diff --git a/src/Adapter/AccountAdapter.php b/src/Adapter/AccountAdapter.php new file mode 100644 index 0000000000000000000000000000000000000000..634c6d658a1859629a68f57de5360d1cae588f10 --- /dev/null +++ b/src/Adapter/AccountAdapter.php @@ -0,0 +1,26 @@ +<?php + +namespace Hp\Patterns\Adapter; + +class AccountAdapter implements AccountInterface +{ + public function __construct(private OtherAccountInterface $account) + { + } + + + public function deposit(float $amount): void + { + $this->account->deposit($amount); + } + + public function withdraw(float $amount): void + { + $this->account->withdraw($amount); + } + + public function blockAccount(): void + { + $this->account->blockAccount(); + } +} \ No newline at end of file diff --git a/src/Adapter/AccountInterface.php b/src/Adapter/AccountInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..b70e73d8c9f25ceb1d181d757cf6b3c90d65a5ef --- /dev/null +++ b/src/Adapter/AccountInterface.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\Adapter; + +interface AccountInterface +{ + public function deposit(float $amount); + + public function withdraw(float $amount); +} \ No newline at end of file diff --git a/src/Adapter/OtherAccountInterface.php b/src/Adapter/OtherAccountInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..08af6fddba2735f4255f502c425fba6ebce4a419 --- /dev/null +++ b/src/Adapter/OtherAccountInterface.php @@ -0,0 +1,12 @@ +<?php + +namespace Hp\Patterns\Adapter; + +interface OtherAccountInterface +{ + public function blockAccount(): void; + + public function deposit(float $amount); + + public function withdraw(float $amount); +} \ No newline at end of file diff --git a/src/Adapter/README.md b/src/Adapter/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d9d8f7586a4cab1c1f5734dd0e4a69fcbc498a69 --- /dev/null +++ b/src/Adapter/README.md @@ -0,0 +1 @@ +Ðдаптер предÑтавлÑет Ñобой паттерн, который позволÑет привеÑти неÑтандартный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-то клаÑÑа ÑовмеÑтимым Ñ Ð²Ð°ÑˆÐ¸Ð¼ кодом. По Ñути он предоÑтавлÑет проÑлойку Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом, удобным Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð² \ No newline at end of file diff --git a/src/Builder/AccountBuilder.php b/src/Builder/AccountBuilder.php new file mode 100644 index 0000000000000000000000000000000000000000..4367de1fb95ae45ebc8f460048638901c3e7aeb5 --- /dev/null +++ b/src/Builder/AccountBuilder.php @@ -0,0 +1,33 @@ +<?php + +namespace Hp\Patterns\Builder; + +class AccountBuilder implements Builder +{ + private string $accountType; + + private float $balance; + + private float $monthlyFee; + + public function withAccountType(string $accountType): Builder + { + $this->accountType = $accountType; + + return $this; + } + + public function withInitialBalance(float $initialBalance): Builder + { + $this->balance += $initialBalance; + + return $this; + } + + public function withMonthlyFee(float $monthlyFee): Builder + { + $this->monthlyFee = $monthlyFee; + + return $this; + } +} \ No newline at end of file diff --git a/src/Builder/Builder.php b/src/Builder/Builder.php new file mode 100644 index 0000000000000000000000000000000000000000..0d58f6613f908e62896ace487b719bac9d8f39b9 --- /dev/null +++ b/src/Builder/Builder.php @@ -0,0 +1,12 @@ +<?php + +namespace Hp\Patterns\Builder; + +interface Builder +{ + public function withAccountType(string $accountType): Builder; + + public function withInitialBalance(float $initialBalance): Builder; + + public function withMonthlyFee(float $monthlyFee): Builder; +} \ No newline at end of file diff --git a/src/Builder/Director.php b/src/Builder/Director.php new file mode 100644 index 0000000000000000000000000000000000000000..e19c2780f4769f9045bd662edca37d5d925213a4 --- /dev/null +++ b/src/Builder/Director.php @@ -0,0 +1,15 @@ +<?php + +namespace Hp\Patterns\Builder; + +class Director +{ + public function build(Builder $builder): Builder + { + $account = $builder->withAccountType('Savings') + ->withInitialBalance(1200) + ->withMonthlyFee(12); + + return $account; + } +} \ No newline at end of file diff --git a/src/Builder/README.md b/src/Builder/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d5e120a93b046ee7c68d41603d5be3b9eb283ae0 --- /dev/null +++ b/src/Builder/README.md @@ -0,0 +1 @@ +Строитель - Ñто шаблон проектированиÑ, который инкаÑпулирует Ñоздание объекта и позволÑет разделить его на различные Ñтапы \ No newline at end of file diff --git a/src/Command/Command.php b/src/Command/Command.php new file mode 100644 index 0000000000000000000000000000000000000000..76158a1c467f451b1daf5bcf5c769355051f5d4c --- /dev/null +++ b/src/Command/Command.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\Command; + +interface Command +{ + public function execute(float $amountCash): void; +} \ No newline at end of file diff --git a/src/Command/EnterCashCommand.php b/src/Command/EnterCashCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..6d36d91b48590f9f47fce287263804cbd75a7601 --- /dev/null +++ b/src/Command/EnterCashCommand.php @@ -0,0 +1,15 @@ +<?php + +namespace Hp\Patterns\Command; + +class EnterCashCommand implements Command +{ + public function __construct(private ReceiverATM $receiver) + { + } + + public function execute(float $amountCash): void + { + $this->receiver->enterCash($amountCash); + } +} \ No newline at end of file diff --git a/src/Command/Invoker.php b/src/Command/Invoker.php new file mode 100644 index 0000000000000000000000000000000000000000..b46e9cbbbf72d64b9b3fe7eb1ac92b69178e69fe --- /dev/null +++ b/src/Command/Invoker.php @@ -0,0 +1,18 @@ +<?php + +namespace Hp\Patterns\Command; + +class Invoker +{ + private Command $command; + + public function setCommand(Command $command): void + { + $this->command = $command; + } + + public function run(float $amountCash): void + { + $this->command->execute($amountCash); + } +} diff --git a/src/Command/README.md b/src/Command/README.md new file mode 100644 index 0000000000000000000000000000000000000000..43d38093be5c0f9802418b2d8dbc5f69b925ae79 --- /dev/null +++ b/src/Command/README.md @@ -0,0 +1 @@ +Паттерн Command позволÑет инкапÑулировать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° выполнение определенного дейÑÑ‚Ð²Ð¸Ñ Ð² виде отдельного объекта, который и называетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹. Также команды могут ÑтавитьÑÑ Ð² очередь или быть отменены \ No newline at end of file diff --git a/src/Command/ReceiverATM.php b/src/Command/ReceiverATM.php new file mode 100644 index 0000000000000000000000000000000000000000..28ba31c4e086b7f374c994b56ba8952280414493 --- /dev/null +++ b/src/Command/ReceiverATM.php @@ -0,0 +1,18 @@ +<?php + +namespace Hp\Patterns\Command; + +class ReceiverATM +{ + private float $amountCash; + + public function enterCash(float $amountCash): void + { + $this->amountCash += $amountCash; + } + + public function withdrawCash(float $amountCash): void + { + $this->amountCash -= $amountCash; + } +} diff --git a/src/Command/WithdrawCashCommand.php b/src/Command/WithdrawCashCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..29202a38bb301a828a0a42f887c952b193c42888 --- /dev/null +++ b/src/Command/WithdrawCashCommand.php @@ -0,0 +1,15 @@ +<?php + +namespace Hp\Patterns\Command; + +class WithdrawCashCommand implements Command +{ + public function __construct(private ReceiverATM $receiver) + { + } + + public function execute(float $amountCash): void + { + $this->receiver->withdrawCash($amountCash); + } +} \ No newline at end of file diff --git a/src/Decorator/Account.php b/src/Decorator/Account.php new file mode 100644 index 0000000000000000000000000000000000000000..79cc8f0e90b22537e83cd1fcfbb29ee6dc436d03 --- /dev/null +++ b/src/Decorator/Account.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\Decorator; + +interface Account +{ + public function deposit(float $amount): void; + + public function withdraw(float $amount): void; +} \ No newline at end of file diff --git a/src/Decorator/AccountDecorator.php b/src/Decorator/AccountDecorator.php new file mode 100644 index 0000000000000000000000000000000000000000..3c4c73131d7451aa2ed0cdcbb5b853a7d60da264 --- /dev/null +++ b/src/Decorator/AccountDecorator.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\Decorator; + +class AccountDecorator +{ + public function __construct(protected Account $account) + { + } +} \ No newline at end of file diff --git a/src/Decorator/README.md b/src/Decorator/README.md new file mode 100644 index 0000000000000000000000000000000000000000..08a531c7c8c8d9f926104cf64358951cdb900358 --- /dev/null +++ b/src/Decorator/README.md @@ -0,0 +1 @@ +Паттерн Decorator позволÑет динамичеÑки добавлÑÑ‚ÑŒ новую функциональноÑÑ‚ÑŒ в клаÑÑÑ‹. \ No newline at end of file diff --git a/src/Decorator/SavingsAccount.php b/src/Decorator/SavingsAccount.php new file mode 100644 index 0000000000000000000000000000000000000000..aed3713668bfc00f5cba76219aa3e767ee579f61 --- /dev/null +++ b/src/Decorator/SavingsAccount.php @@ -0,0 +1,20 @@ +<?php + +namespace Hp\Patterns\Decorator; + +class SavingsAccount extends AccountDecorator +{ + private float $money; + + private float $percent = 10; + + public function getBalance(): float + { + return $this->money; + } + + public function percentageIncrease(): void + { + $this->money += $this->money * ($this->percent / 100); + } +} \ No newline at end of file diff --git a/src/DependencyInjection/ATM.php b/src/DependencyInjection/ATM.php new file mode 100644 index 0000000000000000000000000000000000000000..98aa54403ea8d0843ce8c26f09c5f8009abf389e --- /dev/null +++ b/src/DependencyInjection/ATM.php @@ -0,0 +1,17 @@ +<?php + +namespace Hp\Patterns\DependencyInjection; + +class ATM +{ + public function __construct(private CreditCard $card) + { + } + + public function getCardInfo(): void + { + echo 'Owner: '.$this->card->getOwner()."\n"; + echo 'Number card: '.$this->card->getNumber()."\n"; + echo 'In the wallet: '.$this->card->getCountOfMoney()." ₽ \n"; + } +} \ No newline at end of file diff --git a/src/DependencyInjection/CreditCard.php b/src/DependencyInjection/CreditCard.php new file mode 100644 index 0000000000000000000000000000000000000000..d2c40223c130fe94ea4ba9d9d1a739fe3d9a133c --- /dev/null +++ b/src/DependencyInjection/CreditCard.php @@ -0,0 +1,28 @@ +<?php + +namespace Hp\Patterns\DependencyInjection; + +class CreditCard +{ + public function __construct( + private string $number, + private float $countOfMoney, + private string $owner + ) { + } + + public function getNumber(): string + { + return $this->number; + } + + public function getCountOfMoney(): float + { + return $this->countOfMoney; + } + + public function getOwner(): string + { + return $this->owner; + } +} diff --git a/src/DependencyInjection/README.md b/src/DependencyInjection/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b75c53b4a26a7b8456c59c89be5923da3616d08b --- /dev/null +++ b/src/DependencyInjection/README.md @@ -0,0 +1 @@ +Dependency Injection предÑтавлÑет Ñобой механизм, который позволÑет Ñделать компоненты программы ÑлабоÑвÑзанными. ОÑновой данного механизма ÑвлÑетÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ одной ÑущноÑти от другой. \ No newline at end of file diff --git a/src/Facade/ATM.php b/src/Facade/ATM.php new file mode 100644 index 0000000000000000000000000000000000000000..62362c3e06daa4780bdc7c789b35ec697ae4150e --- /dev/null +++ b/src/Facade/ATM.php @@ -0,0 +1,16 @@ +<?php + +namespace Hp\Patterns\Facade; + +interface ATM +{ + public function acceptCard(): void; + + public function waitForEnterAmount(): void; + + public function checkBalance(): void; + + public function giveOutMoney(): void; + + public function giveOutCard(): void; +} \ No newline at end of file diff --git a/src/Facade/Client.php b/src/Facade/Client.php new file mode 100644 index 0000000000000000000000000000000000000000..118138d101fbbc43fd39195a14dbabe1c3fceba5 --- /dev/null +++ b/src/Facade/Client.php @@ -0,0 +1,14 @@ +<?php + +namespace Hp\Patterns\Facade; + +interface Client +{ + public function enterCard(): void; + + public function enterAmount(float $amount): void; + + public function takeMoney(): void; + + public function takeCard(): void; +} \ No newline at end of file diff --git a/src/Facade/Facade.php b/src/Facade/Facade.php new file mode 100644 index 0000000000000000000000000000000000000000..bd4789238ecaf521e48d0373927b60850d393dcf --- /dev/null +++ b/src/Facade/Facade.php @@ -0,0 +1,27 @@ +<?php + +namespace Hp\Patterns\Facade; + +class Facade +{ + public function __construct(private ATM $atm, private Client $client) + { + } + + public function withdrawMoney(): void + { + $this->client->enterCard(); + + $this->atm->acceptCard(); + $this->atm->waitForEnterAmount(); + + $this->client->enterAmount(1000); + + $this->atm->checkBalance(); + $this->atm->giveOutMoney(); + $this->atm->acceptCard(); + + $this->client->takeMoney(); + $this->client->takeCard(); + } +} \ No newline at end of file diff --git a/src/Facade/README.md b/src/Facade/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3acb193df8ed19e0d12ad9f514b447c3627da015 --- /dev/null +++ b/src/Facade/README.md @@ -0,0 +1 @@ +ФаÑад предÑтавлÑет Ñобой шаблон проектированиÑ, который позволÑет Ñкрыть ÑложноÑÑ‚ÑŒ ÑиÑтемы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð¾Ð³Ð¾ интерфейÑа и взаимодейÑÑ‚Ð²Ð¸Ñ Ñ Ð½ÐµÐ¹ \ No newline at end of file diff --git a/src/FactoryMethod/Card.php b/src/FactoryMethod/Card.php new file mode 100644 index 0000000000000000000000000000000000000000..5f73743918e57160b3b05376d583d76225bebe22 --- /dev/null +++ b/src/FactoryMethod/Card.php @@ -0,0 +1,10 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +interface Card +{ + public function deposit(float $amount); + + public function withdraw(float $amount); +} \ No newline at end of file diff --git a/src/FactoryMethod/CardFactory.php b/src/FactoryMethod/CardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..2a67fe16f038d423285cf93d5b91198d1dca9c2b --- /dev/null +++ b/src/FactoryMethod/CardFactory.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +interface CardFactory +{ + public function createCard(): Card; +} \ No newline at end of file diff --git a/src/FactoryMethod/CreditCard.php b/src/FactoryMethod/CreditCard.php new file mode 100644 index 0000000000000000000000000000000000000000..e5505e59a6b606ec4355fbc4e715692bfd6ed6ad --- /dev/null +++ b/src/FactoryMethod/CreditCard.php @@ -0,0 +1,18 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +class CreditCard implements Card +{ + private float $wallet; + + public function deposit(float $amount): void + { + $this->wallet += $amount; + } + + public function withdraw(float $amount): void + { + $this->wallet -= $amount; + } +} \ No newline at end of file diff --git a/src/FactoryMethod/CreditCardFactory.php b/src/FactoryMethod/CreditCardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..7f410f33398bef6eb56893d222869b340fb90585 --- /dev/null +++ b/src/FactoryMethod/CreditCardFactory.php @@ -0,0 +1,11 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +class CreditCardFactory implements CardFactory +{ + public function createCard(): Card + { + return new CreditCard(); + } +} \ No newline at end of file diff --git a/src/FactoryMethod/DebitCard.php b/src/FactoryMethod/DebitCard.php new file mode 100644 index 0000000000000000000000000000000000000000..915929135dfdec9d3ac49cea2cc3486db7b6420a --- /dev/null +++ b/src/FactoryMethod/DebitCard.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +class DebitCard implements Card +{ + +} \ No newline at end of file diff --git a/src/FactoryMethod/DebitCardFactory.php b/src/FactoryMethod/DebitCardFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..6eefe73b9f7a8cbdf1128593635674c38d9c2aad --- /dev/null +++ b/src/FactoryMethod/DebitCardFactory.php @@ -0,0 +1,11 @@ +<?php + +namespace Hp\Patterns\FactoryMethod; + +class DebitCardFactory implements CardFactory +{ + public function createCard(): Card + { + return new DebitCard(); + } +} \ No newline at end of file diff --git a/src/FactoryMethod/README.md b/src/FactoryMethod/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cce8ef7b8af0f9daa758df7bf12e078ebc443e00 --- /dev/null +++ b/src/FactoryMethod/README.md @@ -0,0 +1 @@ +Фабричный метод - Ñто паттерн, который определÑет Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² некоторого клаÑÑа, где при Ñтом решение о том, объект какого клаÑÑа Ñоздавать передаетÑÑ Ð² подклаÑÑÑ‹ \ No newline at end of file diff --git a/src/Iterator/Payment.php b/src/Iterator/Payment.php new file mode 100644 index 0000000000000000000000000000000000000000..f28a3a78b9ceda248178cd8ed42a31dee7425819 --- /dev/null +++ b/src/Iterator/Payment.php @@ -0,0 +1,17 @@ +<?php + +namespace Hp\Patterns\Iterator; + +class Payment +{ + private int $id; + + private \DateTimeImmutable $date; + + private float $amount; + + public function getId(): int + { + return $this->id; + } +} \ No newline at end of file diff --git a/src/Iterator/PaymentList.php b/src/Iterator/PaymentList.php new file mode 100644 index 0000000000000000000000000000000000000000..99a2c957eab0b1c9c51249487699de1c579f42de --- /dev/null +++ b/src/Iterator/PaymentList.php @@ -0,0 +1,60 @@ +<?php + +namespace Hp\Patterns\Iterator; + +use Countable; +use Iterator; + +class PaymentList implements Countable, Iterator +{ + /** @var array Payment */ + private array $payments; + + private int $currentIndex = 0; + + public function addPayment(Payment $payment): void + { + $this->payments[] = $payment; + } + + public function removePayment(Payment $payment): void + { + foreach ($this->payments as $key => $value) { + if ($value->getId() === $payment->getId()) { + unset($this->payments[$key]); + } + } + + $this->payments = array_values($this->payments); + } + + public function current(): Payment + { + return $this->payments[$this->currentIndex]; + } + + public function next(): void + { + $this->currentIndex++; + } + + public function key(): int + { + return $this->currentIndex; + } + + public function valid(): bool + { + return isset($this->payments[$this->currentIndex]); + } + + public function rewind(): void + { + $this->currentIndex = 0; + } + + public function count(): int + { + return count($this->payments); + } +} \ No newline at end of file diff --git a/src/Iterator/README.md b/src/Iterator/README.md new file mode 100644 index 0000000000000000000000000000000000000000..97de2755a103306b388adb7d7471c4c654f06603 --- /dev/null +++ b/src/Iterator/README.md @@ -0,0 +1 @@ +Паттерн Iterator предÑтавлÑет Ñобой Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð¿Ð¾Ñледовательного доÑтупа к Ñлементам ÑоÑтавного объекта \ No newline at end of file diff --git a/src/Observer/Card.php b/src/Observer/Card.php new file mode 100644 index 0000000000000000000000000000000000000000..4a0f6a9f36774b21beb3d06b3eb70eb9fff30e2e --- /dev/null +++ b/src/Observer/Card.php @@ -0,0 +1,47 @@ +<?php + +namespace Hp\Patterns\Observer; + +use SplObjectStorage; +use SplSubject; +use SplObserver; + +class Card implements SplSubject +{ + private SplObjectStorage $observers; + + private float $money = 0; + + public function __construct() + { + $this->observers = new SplObjectStorage(); + } + + public function attach(SplObserver $observer): void + { + $this->observers->attach($observer); + } + + public function detach(SplObserver $observer): void + { + $this->observers->detach($observer); + } + + public function deposit(float $money): void + { + $this->money += $money; + $this->notify(); + } + + public function getAmount(): float + { + return $this->money; + } + + public function notify(): void + { + foreach ($this->observers as $observer) { + $observer->update($this); + } + } +} \ No newline at end of file diff --git a/src/Observer/CardObserver.php b/src/Observer/CardObserver.php new file mode 100644 index 0000000000000000000000000000000000000000..f6c444b58d834f923e3ba4fdf28a9137f8c12f30 --- /dev/null +++ b/src/Observer/CardObserver.php @@ -0,0 +1,23 @@ +<?php + +namespace Hp\Patterns\Observer; + +use SplObserver; +use SplSubject; + +class CardObserver implements SplObserver +{ + private array $updatedCards = []; + + public function update(SplSubject $subject): void + { + $this->updatedCards[] = $subject; + } + + public function getSumUpdatedCards(): void + { + foreach ($this->updatedCards as $card) { + echo $card->getAmount(); + } + } +} \ No newline at end of file diff --git a/src/Observer/README.md b/src/Observer/README.md new file mode 100644 index 0000000000000000000000000000000000000000..dfaff8c155dae22839bbd59093116bf6e54d27db --- /dev/null +++ b/src/Observer/README.md @@ -0,0 +1 @@ +Паттерн Ðаблюдатель - Ñто шаблон проектированиÑ, где при изменении наблюдаемого объекта автоматичеÑкие проиÑходит оповещение вÑех наблюдателей \ No newline at end of file diff --git a/src/Registry/README.md b/src/Registry/README.md new file mode 100644 index 0000000000000000000000000000000000000000..269373d313c84be625660d05d14ea9b4a26c0183 --- /dev/null +++ b/src/Registry/README.md @@ -0,0 +1 @@ +Registry иÑпользуетÑÑ Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ централизированного Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð², которые чаÑто иÑпользуютÑÑ Ð²Ð¾ вÑем приложении. СчитаетÑÑ Ð°Ð½Ñ‚Ð¸Ð¿Ð°Ñ‚Ñ‚ÐµÑ€Ð½Ð¾Ð¼ из-за того, что вводитÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ ÑоÑтоÑние \ No newline at end of file diff --git a/src/Registry/Registry.php b/src/Registry/Registry.php new file mode 100644 index 0000000000000000000000000000000000000000..4a69a0aa0fea1eb499956b0851a966ccf9899edd --- /dev/null +++ b/src/Registry/Registry.php @@ -0,0 +1,33 @@ +<?php + +namespace Hp\Patterns\Registry; + +use InvalidArgumentException; +use Hp\Patterns\ServiceLocator\ServiceInterface; + +abstract class Registry +{ + private static array $services = []; + + private static array $allowedKeys = [ + 'RegisterService' + ]; + + public static function set(string $key, ServiceInterface $service): void + { + if (!in_array($key, self::$allowedKeys, true)) { + throw new InvalidArgumentException(); + } + + self::$services[$key] = $service; + } + + public static function get(string $key): ServiceInterface + { + if (!in_array($key, self::$allowedKeys, true) || !isset(self::$services[$key])) { + throw new InvalidArgumentException(); + } + + return self::$services[$key]; + } +} \ No newline at end of file diff --git a/src/ServiceLocator/README.md b/src/ServiceLocator/README.md new file mode 100644 index 0000000000000000000000000000000000000000..642e75773c06d3734d22a6c23dcf2a83c07d9c0a --- /dev/null +++ b/src/ServiceLocator/README.md @@ -0,0 +1 @@ +Service Locator Ñчитают антипаттерном, поÑкольку он нарушает принципы инверÑии завиÑимоÑтей. Он позволÑет Ñкрывать завиÑимоÑти клаÑÑа и предназначен Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ ÑлабоÑвÑзанной архитектуры. Однако, в Ñлучае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей имеетÑÑ Ñ€Ð¸Ñк Ñломать функционалы клаÑÑов, которые их иÑпользуют. \ No newline at end of file diff --git a/src/ServiceLocator/RegisterService.php b/src/ServiceLocator/RegisterService.php new file mode 100644 index 0000000000000000000000000000000000000000..dd2b7b411906264f61640e114830550a68e81bfb --- /dev/null +++ b/src/ServiceLocator/RegisterService.php @@ -0,0 +1,20 @@ +<?php + +namespace Hp\Patterns\ServiceLocator; + +class RegisterService implements ServiceInterface +{ + public function __construct(private array $users) + { + } + + public function register(string $name): void + { + $this->users[] = $name; + } + + public function getUsers(): array + { + return $this->users; + } +} \ No newline at end of file diff --git a/src/ServiceLocator/ServiceInterface.php b/src/ServiceLocator/ServiceInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..77e1510fec68976c6af247e7ba26bff12fbea004 --- /dev/null +++ b/src/ServiceLocator/ServiceInterface.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\ServiceLocator; + +interface ServiceInterface +{ + +} \ No newline at end of file diff --git a/src/ServiceLocator/ServiceLocator.php b/src/ServiceLocator/ServiceLocator.php new file mode 100644 index 0000000000000000000000000000000000000000..df87b51761ab6b332246fed540c2d38966f75ba9 --- /dev/null +++ b/src/ServiceLocator/ServiceLocator.php @@ -0,0 +1,44 @@ +<?php + +namespace Hp\Patterns\ServiceLocator; + +use InvalidArgumentException; + +class ServiceLocator +{ + private array $services = []; + + private array $instantiated = []; + + public function addInstance(string $class, ServiceInterface $service): void + { + $this->instantiated[$class] = $service; + } + + public function addClass(string $class, array $params): void + { + $this->services[$class] = $params; + } + + public function has(string $class): bool + { + return isset($this->instantiated[$class]) || isset($this->services[$class]); + } + + public function get(string $class): ServiceInterface + { + if (isset($this->instantiated[$class])) { + return $this->instantiated[$class]; + } + + $object = new $class(...$this->services[$class]); + + if (!$object instanceof ServiceInterface) { + throw new InvalidArgumentException(); + } + + $this->instantiated[$class] = $object; + + return $object; + } +} diff --git a/src/Strategy/AnnuityPayment.php b/src/Strategy/AnnuityPayment.php new file mode 100644 index 0000000000000000000000000000000000000000..6cd40f58e55cf527082e2f0e0f37f4679776e13f --- /dev/null +++ b/src/Strategy/AnnuityPayment.php @@ -0,0 +1,18 @@ +<?php + +namespace Hp\Patterns\Strategy; + +class AnnuityPayment implements Payment +{ + + public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float + { + $percentInMonth = $percentOfRate / 12 / 100; + + $payment = $total * ($percentInMonth + ($percentInMonth / ((1 + $percentInMonth)**$monthCount - 1))); + + $payment += $balanceDebt * $percentInMonth; + + return $payment; + } +} \ No newline at end of file diff --git a/src/Strategy/DifferentialPayment.php b/src/Strategy/DifferentialPayment.php new file mode 100644 index 0000000000000000000000000000000000000000..68631f097f67f7011b8460ed2394b2c514fbc09d --- /dev/null +++ b/src/Strategy/DifferentialPayment.php @@ -0,0 +1,17 @@ +<?php + +namespace Hp\Patterns\Strategy; + +class DifferentialPayment implements Payment +{ + public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float + { + $payment = $total / $monthCount; + + $percentInMonth = $percentOfRate / 12 / 100; + + $payment += $balanceDebt * $percentInMonth; + + return $payment; + } +} diff --git a/src/Strategy/Payment.php b/src/Strategy/Payment.php new file mode 100644 index 0000000000000000000000000000000000000000..f6c2d88083ba092c68e086e2eca4e9459c1ba91a --- /dev/null +++ b/src/Strategy/Payment.php @@ -0,0 +1,8 @@ +<?php + +namespace Hp\Patterns\Strategy; + +interface Payment +{ + public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float; +} \ No newline at end of file diff --git a/src/Strategy/README.md b/src/Strategy/README.md new file mode 100644 index 0000000000000000000000000000000000000000..81595ea9afd80ed6ffa8538d3253e96477faf51f --- /dev/null +++ b/src/Strategy/README.md @@ -0,0 +1 @@ +Паттерн Strategy предÑтавлÑет Ñобой шаблон, который определÑет набор каких-либо алгоритмов, где каждый из них инкапÑулируетÑÑ Ð¸ ÑвлÑетÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð·Ð°Ð¼ÐµÐ½Ñемым \ No newline at end of file