diff --git a/.travis.yml b/.travis.yml index 4182e161cfe..175976af6f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: php -php: 7.3 +php: '7.3' install: - composer install diff --git a/ecs.yaml b/ecs.yaml index 31bd1108a7d..d0d05310017 100644 --- a/ecs.yaml +++ b/ecs.yaml @@ -10,7 +10,7 @@ services: enable_each_parameter_and_return_inspection: true Symplify\CodingStandard\Sniffs\CleanCode\CognitiveComplexitySniff: - max_cognitive_complexity: 6 + max_cognitive_complexity: 8 parameters: skip: @@ -20,3 +20,7 @@ parameters: # exists since PHP 7.3, not before Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer: - 'tests/Posts/Year2018/Php73/Php73Test.php' + + # mixed[] array redundancy + SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingTraversableReturnTypeHintSpecification: ~ + SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingTraversableParameterTypeHintSpecification: ~ diff --git a/source/_data/generated/php_framework_trends.yaml b/source/_data/generated/php_framework_trends.yaml new file mode 100644 index 00000000000..f8c4eecc0e5 --- /dev/null +++ b/source/_data/generated/php_framework_trends.yaml @@ -0,0 +1,1581 @@ +# this file was generated on 2019-04-10 20:29:13, do not edit it manually +parameters: + php_framework_trends: + nette: + name: Nette + vendor_total_last_month: 117476 + vendor_total_last_year: 28523790 + average_last_year_trend: 26.76 + packages_data: + - + package_name: nette/utils + last_month_average_daily_downloads: 16463 + last_year_trend: 67.67 + last_year_total: 3616350 + last_2_years_trend: 134.61 + - + package_name: nette/php-generator + last_month_average_daily_downloads: 15277 + last_year_trend: 70.63 + last_year_total: 3242340 + last_2_years_trend: 159.2 + - + package_name: nette/finder + last_month_average_daily_downloads: 14631 + last_year_trend: 61.43 + last_year_total: 3232320 + last_2_years_trend: 140.27 + - + package_name: nette/robot-loader + last_month_average_daily_downloads: 13861 + last_year_trend: 62.84 + last_year_total: 3042540 + last_2_years_trend: 155.15 + - + package_name: nette/neon + last_month_average_daily_downloads: 13527 + last_year_trend: 59.65 + last_year_total: 3039510 + last_2_years_trend: 144.09 + - + package_name: nette/di + last_month_average_daily_downloads: 13405 + last_year_trend: 58.55 + last_year_total: 3074430 + last_2_years_trend: 150.25 + - + package_name: nette/bootstrap + last_month_average_daily_downloads: 12964 + last_year_trend: 58.6 + last_year_total: 2968470 + last_2_years_trend: 145.24 + - + package_name: nette/caching + last_month_average_daily_downloads: 2450 + last_year_trend: 2.25 + last_year_total: 907800 + last_2_years_trend: -0.87 + - + package_name: nette/http + last_month_average_daily_downloads: 1612 + last_year_trend: 7.5 + last_year_total: 560490 + last_2_years_trend: 16.93 + - + package_name: nette/reflection + last_month_average_daily_downloads: 1549 + last_year_trend: 9.24 + last_year_total: 567660 + last_2_years_trend: 1.39 + - + package_name: nette/mail + last_month_average_daily_downloads: 1522 + last_year_trend: 7.23 + last_year_total: 551250 + last_2_years_trend: 17.37 + - + package_name: nette/component-model + last_month_average_daily_downloads: 1477 + last_year_trend: 10.93 + last_year_total: 521610 + last_2_years_trend: 14.52 + - + package_name: nette/application + last_month_average_daily_downloads: 1444 + last_year_trend: 13.47 + last_year_total: 513930 + last_2_years_trend: 14.85 + - + package_name: nette/forms + last_month_average_daily_downloads: 1299 + last_year_trend: 12.1 + last_year_total: 446310 + last_2_years_trend: 17.62 + - + package_name: nette/security + last_month_average_daily_downloads: 1274 + last_year_trend: 15.72 + last_year_total: 451080 + last_2_years_trend: 20.71 + - + package_name: nette/safe-stream + last_month_average_daily_downloads: 1056 + last_year_trend: 8.29 + last_year_total: 393240 + last_2_years_trend: 3.74 + - + package_name: nette/database + last_month_average_daily_downloads: 1031 + last_year_trend: 16.95 + last_year_total: 376650 + last_2_years_trend: 23.27 + - + package_name: nette/tester + last_month_average_daily_downloads: 742 + last_year_trend: -0.29 + last_year_total: 268170 + last_2_years_trend: 12.91 + - + package_name: nette/tokenizer + last_month_average_daily_downloads: 727 + last_year_trend: 6.6 + last_year_total: 288330 + last_2_years_trend: 6.85 + - + package_name: nette/deprecated + last_month_average_daily_downloads: 597 + last_year_trend: 7.11 + last_year_total: 235050 + last_2_years_trend: -2.14 + - + package_name: nette/nette + last_month_average_daily_downloads: 568 + last_year_trend: 5.39 + last_year_total: 226260 + last_2_years_trend: -3.73 + symfony: + name: Symfony + vendor_total_last_month: 3656329 + vendor_total_last_year: 1117628160 + average_last_year_trend: 68.54 + packages_data: + - + package_name: symfony/polyfill-mbstring + last_month_average_daily_downloads: 195253 + last_year_trend: 5.43 + last_year_total: 65678130 + last_2_years_trend: 16.2 + - + package_name: symfony/polyfill-ctype + last_month_average_daily_downloads: 179197 + last_year_trend: 9.14 + last_year_total: 57242070 + last_2_years_trend: 26.29 + - + package_name: symfony/console + last_month_average_daily_downloads: 159549 + last_year_trend: 17.92 + last_year_total: 48489330 + last_2_years_trend: 33.04 + - + package_name: symfony/finder + last_month_average_daily_downloads: 145163 + last_year_trend: 19.68 + last_year_total: 43511400 + last_2_years_trend: 38.5 + - + package_name: symfony/event-dispatcher + last_month_average_daily_downloads: 144621 + last_year_trend: 14.84 + last_year_total: 44772690 + last_2_years_trend: 25.76 + - + package_name: symfony/debug + last_month_average_daily_downloads: 143359 + last_year_trend: 14.05 + last_year_total: 44587620 + last_2_years_trend: 25.1 + - + package_name: symfony/process + last_month_average_daily_downloads: 140627 + last_year_trend: 19.06 + last_year_total: 42370380 + last_2_years_trend: 36.36 + - + package_name: symfony/translation + last_month_average_daily_downloads: 123605 + last_year_trend: 19.03 + last_year_total: 37025430 + last_2_years_trend: 39.72 + - + package_name: symfony/http-foundation + last_month_average_daily_downloads: 121299 + last_year_trend: 20.1 + last_year_total: 35866380 + last_2_years_trend: 39.79 + - + package_name: symfony/http-kernel + last_month_average_daily_downloads: 110683 + last_year_trend: 18.11 + last_year_total: 33160080 + last_2_years_trend: 39.97 + - + package_name: symfony/css-selector + last_month_average_daily_downloads: 109477 + last_year_trend: 18.56 + last_year_total: 32576580 + last_2_years_trend: 35.51 + - + package_name: symfony/yaml + last_month_average_daily_downloads: 108491 + last_year_trend: 12.77 + last_year_total: 34117800 + last_2_years_trend: 5.77 + - + package_name: symfony/routing + last_month_average_daily_downloads: 107737 + last_year_trend: 18.95 + last_year_total: 31988460 + last_2_years_trend: 39.9 + - + package_name: symfony/var-dumper + last_month_average_daily_downloads: 106021 + last_year_trend: 20.19 + last_year_total: 31390590 + last_2_years_trend: 46.1 + - + package_name: symfony/polyfill-php72 + last_month_average_daily_downloads: 99352 + last_year_trend: 20.43 + last_year_total: 29023950 + last_2_years_trend: 36.6 + - + package_name: symfony/contracts + last_month_average_daily_downloads: 92638 + last_year_trend: 17.22 + last_year_total: 29667180 + last_2_years_trend: 208.89 + - + package_name: symfony/filesystem + last_month_average_daily_downloads: 89074 + last_year_trend: 30.61 + last_year_total: 25189620 + last_2_years_trend: 40.73 + - + package_name: symfony/polyfill-php70 + last_month_average_daily_downloads: 72564 + last_year_trend: 3.22 + last_year_total: 24723960 + last_2_years_trend: 13.03 + - + package_name: symfony/config + last_month_average_daily_downloads: 61445 + last_year_trend: 22.65 + last_year_total: 17921190 + last_2_years_trend: 35.35 + - + package_name: symfony/polyfill-iconv + last_month_average_daily_downloads: 59077 + last_year_trend: 225.62 + last_year_total: 9502920 + last_2_years_trend: 185.98 + - + package_name: symfony/polyfill-util + last_month_average_daily_downloads: 58341 + last_year_trend: 4.47 + last_year_total: 19445160 + last_2_years_trend: 11.5 + - + package_name: symfony/polyfill-php56 + last_month_average_daily_downloads: 58306 + last_year_trend: 4.46 + last_year_total: 19431630 + last_2_years_trend: 11.5 + - + package_name: symfony/dom-crawler + last_month_average_daily_downloads: 57382 + last_year_trend: 14.94 + last_year_total: 17532420 + last_2_years_trend: 14.98 + - + package_name: symfony/dependency-injection + last_month_average_daily_downloads: 53130 + last_year_trend: 28.42 + last_year_total: 14922270 + last_2_years_trend: 44.35 + - + package_name: symfony/options-resolver + last_month_average_daily_downloads: 45452 + last_year_trend: 44.12 + last_year_total: 11472570 + last_2_years_trend: 91.39 + - + package_name: symfony/polyfill-intl-icu + last_month_average_daily_downloads: 42516 + last_year_trend: 3.19 + last_year_total: 14541270 + last_2_years_trend: 17.64 + - + package_name: symfony/browser-kit + last_month_average_daily_downloads: 41093 + last_year_trend: 26.18 + last_year_total: 11785020 + last_2_years_trend: 33.27 + - + package_name: symfony/monolog-bundle + last_month_average_daily_downloads: 36956 + last_year_trend: 15.34 + last_year_total: 11863320 + last_2_years_trend: 15.47 + - + package_name: symfony/stopwatch + last_month_average_daily_downloads: 34242 + last_year_trend: 38.43 + last_year_total: 8822820 + last_2_years_trend: 49.66 + - + package_name: symfony/validator + last_month_average_daily_downloads: 33908 + last_year_trend: 41.94 + last_year_total: 8915940 + last_2_years_trend: 85.1 + - + package_name: symfony/serializer + last_month_average_daily_downloads: 32762 + last_year_trend: 43.14 + last_year_total: 8525490 + last_2_years_trend: 110.6 + - + package_name: symfony/polyfill-apcu + last_month_average_daily_downloads: 30758 + last_year_trend: -1.07 + last_year_total: 10909770 + last_2_years_trend: 9.4 + - + package_name: symfony/swiftmailer-bundle + last_month_average_daily_downloads: 30545 + last_year_trend: 12.77 + last_year_total: 9969150 + last_2_years_trend: 8.82 + - + package_name: symfony/phpunit-bridge + last_month_average_daily_downloads: 30133 + last_year_trend: 24.13 + last_year_total: 8966460 + last_2_years_trend: 47.77 + - + package_name: symfony/property-access + last_month_average_daily_downloads: 29991 + last_year_trend: 55.7 + last_year_total: 7411770 + last_2_years_trend: 127.2 + - + package_name: symfony/psr-http-message-bridge + last_month_average_daily_downloads: 29111 + last_year_trend: 14.69 + last_year_total: 9149550 + last_2_years_trend: 31.89 + - + package_name: symfony/cache + last_month_average_daily_downloads: 29023 + last_year_trend: 7.76 + last_year_total: 10144320 + last_2_years_trend: 29.3 + - + package_name: symfony/inflector + last_month_average_daily_downloads: 27842 + last_year_trend: 8.98 + last_year_total: 9328410 + last_2_years_trend: 34.28 + - + package_name: symfony/class-loader + last_month_average_daily_downloads: 27198 + last_year_trend: -11.6 + last_year_total: 9749040 + last_2_years_trend: 9.68 + - + package_name: symfony/symfony + last_month_average_daily_downloads: 25434 + last_year_trend: -3.14 + last_year_total: 9495750 + last_2_years_trend: -11.19 + - + package_name: symfony/polyfill-intl-idn + last_month_average_daily_downloads: 24201 + last_year_trend: 4.31 + last_year_total: 18238410 + last_2_years_trend: 12.73 + - + package_name: symfony/framework-bundle + last_month_average_daily_downloads: 21266 + last_year_trend: 59.71 + last_year_total: 5260590 + last_2_years_trend: 251.06 + - + package_name: symfony/twig-bridge + last_month_average_daily_downloads: 20911 + last_year_trend: 53.39 + last_year_total: 5326500 + last_2_years_trend: 150.25 + - + package_name: symfony/dotenv + last_month_average_daily_downloads: 20400 + last_year_trend: 7.1 + last_year_total: 7010250 + last_2_years_trend: 40.05 + - + package_name: symfony/var-exporter + last_month_average_daily_downloads: 20349 + last_year_trend: 21.58 + last_year_total: 6543570 + last_2_years_trend: 292.89 + - + package_name: symfony/expression-language + last_month_average_daily_downloads: 19825 + last_year_trend: 55.7 + last_year_total: 4961280 + last_2_years_trend: 83.87 + - + package_name: symfony/intl + last_month_average_daily_downloads: 19809 + last_year_trend: 59.46 + last_year_total: 4873890 + last_2_years_trend: 145.1 + - + package_name: symfony/flex + last_month_average_daily_downloads: 18169 + last_year_trend: 12.07 + last_year_total: 6218190 + last_2_years_trend: 35.32 + - + package_name: symfony/twig-bundle + last_month_average_daily_downloads: 17492 + last_year_trend: 71.89 + last_year_total: 4156890 + last_2_years_trend: 490.96 + - + package_name: symfony/doctrine-bridge + last_month_average_daily_downloads: 17363 + last_year_trend: 69.46 + last_year_total: 4175100 + last_2_years_trend: 333.17 + - + package_name: symfony/monolog-bridge + last_month_average_daily_downloads: 17033 + last_year_trend: 66.94 + last_year_total: 4151100 + last_2_years_trend: 239.57 + - + package_name: symfony/form + last_month_average_daily_downloads: 16952 + last_year_trend: 63.98 + last_year_total: 4131030 + last_2_years_trend: 178.71 + - + package_name: symfony/asset + last_month_average_daily_downloads: 16045 + last_year_trend: 62.08 + last_year_total: 3988080 + last_2_years_trend: 241.37 + - + package_name: symfony/security-bundle + last_month_average_daily_downloads: 15845 + last_year_trend: 75.51 + last_year_total: 3736050 + last_2_years_trend: 486.54 + - + package_name: symfony/web-profiler-bundle + last_month_average_daily_downloads: 14109 + last_year_trend: 67.21 + last_year_total: 3423720 + last_2_years_trend: 302.23 + - + package_name: symfony/property-info + last_month_average_daily_downloads: 13662 + last_year_trend: 8.17 + last_year_total: 4534650 + last_2_years_trend: 41.23 + - + package_name: symfony/polyfill-php55 + last_month_average_daily_downloads: 13514 + last_year_trend: -1.7 + last_year_total: 4963890 + last_2_years_trend: 5.75 + - + package_name: symfony/security-core + last_month_average_daily_downloads: 13408 + last_year_trend: 107.83 + last_year_total: 2354430 + last_2_years_trend: 33.93 + - + package_name: symfony/polyfill-php54 + last_month_average_daily_downloads: 13205 + last_year_trend: -1.32 + last_year_total: 4843440 + last_2_years_trend: 6.06 + - + package_name: symfony/security-acl + last_month_average_daily_downloads: 11857 + last_year_trend: 3.47 + last_year_total: 4275840 + last_2_years_trend: -10.83 + - + package_name: symfony/orm-pack + last_month_average_daily_downloads: 11774 + last_year_trend: 3.8 + last_year_total: 4116540 + last_2_years_trend: 39.12 + - + package_name: symfony/maker-bundle + last_month_average_daily_downloads: 11494 + last_year_trend: 9.94 + last_year_total: 3949680 + last_2_years_trend: 37.35 + - + package_name: symfony/profiler-pack + last_month_average_daily_downloads: 11246 + last_year_trend: 5.57 + last_year_total: 3912600 + last_2_years_trend: 37.01 + - + package_name: symfony/templating + last_month_average_daily_downloads: 11179 + last_year_trend: 60.46 + last_year_total: 2725290 + last_2_years_trend: 201.46 + - + package_name: symfony/assetic-bundle + last_month_average_daily_downloads: 10842 + last_year_trend: -8.13 + last_year_total: 4434720 + last_2_years_trend: -17.23 + - + package_name: symfony/security-csrf + last_month_average_daily_downloads: 10775 + last_year_trend: 259.09 + last_year_total: 1449450 + last_2_years_trend: 144.97 + - + package_name: symfony/security-guard + last_month_average_daily_downloads: 9860 + last_year_trend: 17.39 + last_year_total: 3191970 + last_2_years_trend: 296.74 + - + package_name: symfony/debug-bundle + last_month_average_daily_downloads: 9589 + last_year_trend: 79.33 + last_year_total: 2240700 + last_2_years_trend: 504.92 + - + package_name: symfony/security-http + last_month_average_daily_downloads: 9455 + last_year_trend: 4007.35 + last_year_total: 910050 + last_2_years_trend: 3175.92 + - + package_name: symfony/web-server-bundle + last_month_average_daily_downloads: 9040 + last_year_trend: 6.12 + last_year_total: 3017520 + last_2_years_trend: 30.49 + - + package_name: symfony/security + last_month_average_daily_downloads: 9018 + last_year_trend: 12.95 + last_year_total: 3605220 + last_2_years_trend: 139.06 + - + package_name: symfony/web-link + last_month_average_daily_downloads: 8318 + last_year_trend: 13.38 + last_year_total: 2454120 + last_2_years_trend: 45.81 + - + package_name: symfony/serializer-pack + last_month_average_daily_downloads: 7858 + last_year_trend: !!float 5 + last_year_total: 2736420 + last_2_years_trend: 45.93 + - + package_name: symfony/debug-pack + last_month_average_daily_downloads: 6930 + last_year_trend: 3.72 + last_year_total: 2459820 + last_2_years_trend: 35.06 + - + package_name: symfony/thanks + last_month_average_daily_downloads: 5807 + last_year_trend: 3.52 + last_year_total: 2047110 + last_2_years_trend: 5.83 + - + package_name: symfony/test-pack + last_month_average_daily_downloads: 5795 + last_year_trend: 7.41 + last_year_total: 2011140 + last_2_years_trend: 48.66 + - + package_name: symfony/panther + last_month_average_daily_downloads: 5687 + last_year_trend: 12.92 + last_year_total: 1943940 + last_2_years_trend: 63.64 + - + package_name: symfony/proxy-manager-bridge + last_month_average_daily_downloads: 3509 + last_year_trend: 36.01 + last_year_total: 906000 + last_2_years_trend: 84.62 + - + package_name: symfony/lock + last_month_average_daily_downloads: 3503 + last_year_trend: 12.47 + last_year_total: 1211340 + last_2_years_trend: 44.57 + - + package_name: symfony/lts + last_month_average_daily_downloads: 3394 + last_year_trend: -13.56 + last_year_total: 1418070 + last_2_years_trend: -21.71 + - + package_name: symfony/workflow + last_month_average_daily_downloads: 2955 + last_year_trend: 8.51 + last_year_total: 983580 + last_2_years_trend: 38.43 + - + package_name: symfony/apache-pack + last_month_average_daily_downloads: 2798 + last_year_trend: 10.46 + last_year_total: 950340 + last_2_years_trend: 39.86 + - + package_name: symfony/webpack-encore-pack + last_month_average_daily_downloads: 2586 + last_year_trend: -7.47 + last_year_total: 990810 + last_2_years_trend: -4.79 + - + package_name: symfony/messenger + last_month_average_daily_downloads: 2458 + last_year_trend: 34.85 + last_year_total: 668820 + last_2_years_trend: 79.79 + - + package_name: symfony/polyfill-xml + last_month_average_daily_downloads: 1538 + last_year_trend: -13.39 + last_year_total: 590400 + last_2_years_trend: -10.69 + - + package_name: symfony/polyfill-php73 + last_month_average_daily_downloads: 1389 + last_year_trend: 70.43 + last_year_total: 382200 + last_2_years_trend: 372.2 + - + package_name: symfony/webpack-encore-bundle + last_month_average_daily_downloads: 1315 + last_year_trend: 6.72 + last_year_total: 1475520 + last_2_years_trend: 9.96 + - + package_name: symfony/website-skeleton + last_month_average_daily_downloads: 1303 + last_year_trend: 1.08 + last_year_total: 482340 + last_2_years_trend: 18.37 + - + package_name: symfony/skeleton + last_month_average_daily_downloads: 921 + last_year_trend: 7.64 + last_year_total: 314760 + last_2_years_trend: 23.74 + - + package_name: symfony/requirements-checker + last_month_average_daily_downloads: 805 + last_year_trend: 8.59 + last_year_total: 264330 + last_2_years_trend: 23.52 + - + package_name: symfony/ldap + last_month_average_daily_downloads: 724 + last_year_trend: 10.44 + last_year_total: 256320 + last_2_years_trend: 25.1 + - + package_name: symfony/polyfill + last_month_average_daily_downloads: 720 + last_year_trend: 5.34 + last_year_total: 242220 + last_2_years_trend: 3.99 + - + package_name: symfony/icu + last_month_average_daily_downloads: 718 + last_year_trend: -4.56 + last_year_total: 271470 + last_2_years_trend: -31.36 + - + package_name: symfony/polyfill-intl-normalizer + last_month_average_daily_downloads: 591 + last_year_trend: 19.7 + last_year_total: 179340 + last_2_years_trend: 44.96 + - + package_name: symfony/mercure + last_month_average_daily_downloads: 570 + last_year_trend: 66.92 + last_year_total: 165360 + last_2_years_trend: 25.56 + - + package_name: symfony/polyfill-intl-grapheme + last_month_average_daily_downloads: 550 + last_year_trend: 20.63 + last_year_total: 168120 + last_2_years_trend: 48.49 + - + package_name: symfony/mercure-bundle + last_month_average_daily_downloads: 545 + last_year_trend: 80.16 + last_year_total: 145740 + last_2_years_trend: 22.34 + illuminate: + name: Laravel + vendor_total_last_month: 189209 + vendor_total_last_year: 57019440 + average_last_year_trend: 15.03 + packages_data: + - + package_name: illuminate/support + last_month_average_daily_downloads: 17831 + last_year_trend: 16.33 + last_year_total: 5218410 + last_2_years_trend: 37.97 + - + package_name: illuminate/contracts + last_month_average_daily_downloads: 17499 + last_year_trend: 14.43 + last_year_total: 5145330 + last_2_years_trend: 40.63 + - + package_name: illuminate/container + last_month_average_daily_downloads: 13934 + last_year_trend: 14.46 + last_year_total: 4140270 + last_2_years_trend: 46.43 + - + package_name: illuminate/database + last_month_average_daily_downloads: 10083 + last_year_trend: 9.66 + last_year_total: 3092640 + last_2_years_trend: 43.75 + - + package_name: illuminate/filesystem + last_month_average_daily_downloads: 9469 + last_year_trend: 19.79 + last_year_total: 2798970 + last_2_years_trend: 47.16 + - + package_name: illuminate/events + last_month_average_daily_downloads: 9289 + last_year_trend: 16.98 + last_year_total: 2766960 + last_2_years_trend: 45.35 + - + package_name: illuminate/config + last_month_average_daily_downloads: 7842 + last_year_trend: 19.03 + last_year_total: 2309970 + last_2_years_trend: 49.3 + - + package_name: illuminate/view + last_month_average_daily_downloads: 7427 + last_year_trend: 16.69 + last_year_total: 2242650 + last_2_years_trend: 52.02 + - + package_name: illuminate/console + last_month_average_daily_downloads: 7044 + last_year_trend: 16.25 + last_year_total: 2113740 + last_2_years_trend: 48.69 + - + package_name: illuminate/session + last_month_average_daily_downloads: 6357 + last_year_trend: 14.71 + last_year_total: 1941900 + last_2_years_trend: 43.38 + - + package_name: illuminate/cache + last_month_average_daily_downloads: 6319 + last_year_trend: 14.39 + last_year_total: 1914150 + last_2_years_trend: 42.05 + - + package_name: illuminate/http + last_month_average_daily_downloads: 6220 + last_year_trend: 13.24 + last_year_total: 1910820 + last_2_years_trend: 42.83 + - + package_name: illuminate/pagination + last_month_average_daily_downloads: 6183 + last_year_trend: 13.03 + last_year_total: 1922880 + last_2_years_trend: 45.75 + - + package_name: illuminate/pipeline + last_month_average_daily_downloads: 6136 + last_year_trend: 13.55 + last_year_total: 1887300 + last_2_years_trend: 45.89 + - + package_name: illuminate/validation + last_month_average_daily_downloads: 6082 + last_year_trend: 13.29 + last_year_total: 1885440 + last_2_years_trend: 42.86 + - + package_name: illuminate/translation + last_month_average_daily_downloads: 6057 + last_year_trend: 14.99 + last_year_total: 1852890 + last_2_years_trend: 46.45 + - + package_name: illuminate/encryption + last_month_average_daily_downloads: 5989 + last_year_trend: 12.36 + last_year_total: 1847040 + last_2_years_trend: 44.18 + - + package_name: illuminate/queue + last_month_average_daily_downloads: 5988 + last_year_trend: 13.21 + last_year_total: 1801740 + last_2_years_trend: 44.58 + - + package_name: illuminate/broadcasting + last_month_average_daily_downloads: 5865 + last_year_trend: 7.37 + last_year_total: 1912500 + last_2_years_trend: 16.08 + - + package_name: illuminate/bus + last_month_average_daily_downloads: 5766 + last_year_trend: 12.63 + last_year_total: 1767720 + last_2_years_trend: 45.45 + - + package_name: illuminate/hashing + last_month_average_daily_downloads: 5530 + last_year_trend: 12.84 + last_year_total: 1713990 + last_2_years_trend: 44.81 + - + package_name: illuminate/auth + last_month_average_daily_downloads: 5432 + last_year_trend: 11.76 + last_year_total: 1686330 + last_2_years_trend: 44.19 + - + package_name: illuminate/log + last_month_average_daily_downloads: 3701 + last_year_trend: 58.28 + last_year_total: 886800 + last_2_years_trend: 783.44 + - + package_name: illuminate/redis + last_month_average_daily_downloads: 2831 + last_year_trend: 19.74 + last_year_total: 840960 + last_2_years_trend: 57.52 + - + package_name: illuminate/mail + last_month_average_daily_downloads: 1636 + last_year_trend: 20.41 + last_year_total: 485940 + last_2_years_trend: 60.73 + - + package_name: illuminate/routing + last_month_average_daily_downloads: 1454 + last_year_trend: 22.99 + last_year_total: 440850 + last_2_years_trend: 48.22 + - + package_name: illuminate/html + last_month_average_daily_downloads: 692 + last_year_trend: -23.29 + last_year_total: 311130 + last_2_years_trend: -25.78 + - + package_name: illuminate/notifications + last_month_average_daily_downloads: 553 + last_year_trend: 11.63 + last_year_total: 180120 + last_2_years_trend: 45.69 + cakephp: + name: CakePHP + vendor_total_last_month: 44150 + vendor_total_last_year: 12471090 + average_last_year_trend: 199.47 + packages_data: + - + package_name: cakephp/chronos + last_month_average_daily_downloads: 10661 + last_year_trend: !!float 12 + last_year_total: 3579030 + last_2_years_trend: 21.82 + - + package_name: cakephp/cakephp + last_month_average_daily_downloads: 3598 + last_year_trend: -18.35 + last_year_total: 1409820 + last_2_years_trend: 42.16 + - + package_name: cakephp/utility + last_month_average_daily_downloads: 2985 + last_year_trend: 135.55 + last_year_total: 599460 + last_2_years_trend: 238.68 + - + package_name: cakephp/core + last_month_average_daily_downloads: 2941 + last_year_trend: 174.5 + last_year_total: 562650 + last_2_years_trend: 1103.79 + - + package_name: cakephp/debug_kit + last_month_average_daily_downloads: 2847 + last_year_trend: -8.05 + last_year_total: 1028400 + last_2_years_trend: 34.88 + - + package_name: cakephp/collection + last_month_average_daily_downloads: 2593 + last_year_trend: 218.49 + last_year_total: 473190 + last_2_years_trend: 344.06 + - + package_name: cakephp/datasource + last_month_average_daily_downloads: 2579 + last_year_trend: 227.39 + last_year_total: 461970 + last_2_years_trend: 2778.32 + - + package_name: cakephp/cache + last_month_average_daily_downloads: 2575 + last_year_trend: 213.22 + last_year_total: 471690 + last_2_years_trend: 1427.99 + - + package_name: cakephp/database + last_month_average_daily_downloads: 2571 + last_year_trend: 260.89 + last_year_total: 450060 + last_2_years_trend: 3105.56 + - + package_name: cakephp/plugin-installer + last_month_average_daily_downloads: 2429 + last_year_trend: -7.77 + last_year_total: 884460 + last_2_years_trend: 50.71 + - + package_name: cakephp/migrations + last_month_average_daily_downloads: 2427 + last_year_trend: -7.75 + last_year_total: 868800 + last_2_years_trend: 53.04 + - + package_name: cakephp/bake + last_month_average_daily_downloads: 2162 + last_year_trend: -8.95 + last_year_total: 807090 + last_2_years_trend: 56.49 + - + package_name: cakephp/log + last_month_average_daily_downloads: 1904 + last_year_trend: 1615.38 + last_year_total: 148680 + last_2_years_trend: 869.86 + - + package_name: cakephp/cakephp-codesniffer + last_month_average_daily_downloads: 1878 + last_year_trend: -14.01 + last_year_total: 725790 + last_2_years_trend: 28.28 + zendframework: + name: Zend + vendor_total_last_month: 562261 + vendor_total_last_year: 176990790 + average_last_year_trend: 10.14 + packages_data: + - + package_name: zendframework/zend-diactoros + last_month_average_daily_downloads: 52626 + last_year_trend: -8.02 + last_year_total: 20052150 + last_2_years_trend: 51.99 + - + package_name: zendframework/zend-eventmanager + last_month_average_daily_downloads: 44640 + last_year_trend: 23.89 + last_year_total: 13180560 + last_2_years_trend: 31.5 + - + package_name: zendframework/zend-code + last_month_average_daily_downloads: 43136 + last_year_trend: 27.3 + last_year_total: 12530520 + last_2_years_trend: 34.89 + - + package_name: zendframework/zend-stdlib + last_month_average_daily_downloads: 33302 + last_year_trend: 14.89 + last_year_total: 10265340 + last_2_years_trend: 30.99 + - + package_name: zendframework/zend-escaper + last_month_average_daily_downloads: 25983 + last_year_trend: 18.08 + last_year_total: 7660350 + last_2_years_trend: 37.92 + - + package_name: zendframework/zend-validator + last_month_average_daily_downloads: 18087 + last_year_trend: 19.67 + last_year_total: 5440050 + last_2_years_trend: 19.78 + - + package_name: zendframework/zend-feed + last_month_average_daily_downloads: 14804 + last_year_trend: 28.39 + last_year_total: 3719730 + last_2_years_trend: 54.92 + - + package_name: zendframework/zend-loader + last_month_average_daily_downloads: 14109 + last_year_trend: 14.41 + last_year_total: 4486680 + last_2_years_trend: 24.51 + - + package_name: zendframework/zend-uri + last_month_average_daily_downloads: 13527 + last_year_trend: 10.9 + last_year_total: 3988170 + last_2_years_trend: 20.39 + - + package_name: zendframework/zend-servicemanager + last_month_average_daily_downloads: 13427 + last_year_trend: 7.41 + last_year_total: 4359720 + last_2_years_trend: 19.08 + - + package_name: zendframework/zend-http + last_month_average_daily_downloads: 12253 + last_year_trend: 12.46 + last_year_total: 3794190 + last_2_years_trend: 20.37 + - + package_name: zendframework/zend-json + last_month_average_daily_downloads: 11316 + last_year_trend: 12.37 + last_year_total: 3579150 + last_2_years_trend: 17.76 + - + package_name: zendframework/zend-filter + last_month_average_daily_downloads: 11215 + last_year_trend: 16.02 + last_year_total: 3345360 + last_2_years_trend: 24.91 + - + package_name: zendframework/zend-hydrator + last_month_average_daily_downloads: 10590 + last_year_trend: 4.35 + last_year_total: 3587610 + last_2_years_trend: 15.94 + - + package_name: zendframework/zend-config + last_month_average_daily_downloads: 9521 + last_year_trend: 12.33 + last_year_total: 3033420 + last_2_years_trend: 14.05 + - + package_name: zendframework/zend-inputfilter + last_month_average_daily_downloads: 9248 + last_year_trend: 17.74 + last_year_total: 2663070 + last_2_years_trend: 28.76 + - + package_name: zendframework/zend-math + last_month_average_daily_downloads: 9066 + last_year_trend: 8.55 + last_year_total: 3049380 + last_2_years_trend: 18.44 + - + package_name: zendframework/zend-i18n + last_month_average_daily_downloads: 8553 + last_year_trend: 6.86 + last_year_total: 2805300 + last_2_years_trend: 17.61 + - + package_name: zendframework/zend-view + last_month_average_daily_downloads: 8506 + last_year_trend: 19.19 + last_year_total: 2536590 + last_2_years_trend: 25.96 + - + package_name: zendframework/zend-form + last_month_average_daily_downloads: 7946 + last_year_trend: 14.7 + last_year_total: 2435820 + last_2_years_trend: 27.09 + - + package_name: zendframework/zend-serializer + last_month_average_daily_downloads: 7775 + last_year_trend: 6.13 + last_year_total: 2553450 + last_2_years_trend: 15.3 + - + package_name: zendframework/zend-server + last_month_average_daily_downloads: 7766 + last_year_trend: 10.34 + last_year_total: 2471850 + last_2_years_trend: 19.98 + - + package_name: zendframework/zend-mvc + last_month_average_daily_downloads: 7705 + last_year_trend: 9.32 + last_year_total: 2450850 + last_2_years_trend: 23.98 + - + package_name: zendframework/zend-crypt + last_month_average_daily_downloads: 7702 + last_year_trend: 4.75 + last_year_total: 2633850 + last_2_years_trend: 22.3 + - + package_name: zendframework/zend-log + last_month_average_daily_downloads: 7597 + last_year_trend: 10.72 + last_year_total: 2378340 + last_2_years_trend: 26.53 + - + package_name: zendframework/zend-modulemanager + last_month_average_daily_downloads: 7577 + last_year_trend: 12.43 + last_year_total: 2368050 + last_2_years_trend: 20.04 + - + package_name: zendframework/zend-db + last_month_average_daily_downloads: 7576 + last_year_trend: 16.85 + last_year_total: 2153280 + last_2_years_trend: 70.07 + - + package_name: zendframework/zend-mime + last_month_average_daily_downloads: 7380 + last_year_trend: 36.98 + last_year_total: 1977750 + last_2_years_trend: 46.78 + - + package_name: zendframework/zend-console + last_month_average_daily_downloads: 7380 + last_year_trend: 12.84 + last_year_total: 2304630 + last_2_years_trend: 25.09 + - + package_name: zendframework/zend-soap + last_month_average_daily_downloads: 7103 + last_year_trend: 12.46 + last_year_total: 2239320 + last_2_years_trend: 22.24 + - + package_name: zendframework/zend-mail + last_month_average_daily_downloads: 6991 + last_year_trend: 39.82 + last_year_total: 1854300 + last_2_years_trend: 48.77 + - + package_name: zendframework/zend-session + last_month_average_daily_downloads: 6841 + last_year_trend: 18.41 + last_year_total: 2063970 + last_2_years_trend: 65.58 + - + package_name: zendframework/zend-text + last_month_average_daily_downloads: 6761 + last_year_trend: 9.6 + last_year_total: 2150760 + last_2_years_trend: 25.71 + - + package_name: zendframework/zend-di + last_month_average_daily_downloads: 6280 + last_year_trend: 12.17 + last_year_total: 1978680 + last_2_years_trend: 17.23 + - + package_name: zendframework/zend-psr7bridge + last_month_average_daily_downloads: 6269 + last_year_trend: 7.88 + last_year_total: 2044680 + last_2_years_trend: 18.83 + - + package_name: zendframework/zenddiagnostics + last_month_average_daily_downloads: 5788 + last_year_trend: 37.67 + last_year_total: 1653870 + last_2_years_trend: 84.46 + - + package_name: zendframework/zend-captcha + last_month_average_daily_downloads: 5764 + last_year_trend: 16.98 + last_year_total: 1751010 + last_2_years_trend: 83.11 + - + package_name: zendframework/zend-cache + last_month_average_daily_downloads: 4447 + last_year_trend: 2.21 + last_year_total: 1520340 + last_2_years_trend: 11.38 + - + package_name: zendframework/zendxml + last_month_average_daily_downloads: 3235 + last_year_trend: 0.61 + last_year_total: 1115940 + last_2_years_trend: -0.57 + - + package_name: zendframework/zend-authentication + last_month_average_daily_downloads: 3112 + last_year_trend: 6.33 + last_year_total: 1002540 + last_2_years_trend: 23.58 + - + package_name: zendframework/zend-paginator + last_month_average_daily_downloads: 2990 + last_year_trend: 7.54 + last_year_total: 956910 + last_2_years_trend: 20.09 + - + package_name: zendframework/zendframework1 + last_month_average_daily_downloads: 2540 + last_year_trend: 0.81 + last_year_total: 868290 + last_2_years_trend: 3.31 + - + package_name: zendframework/zend-permissions-acl + last_month_average_daily_downloads: 2532 + last_year_trend: 6.15 + last_year_total: 816420 + last_2_years_trend: 19.17 + - + package_name: zendframework/zend-ldap + last_month_average_daily_downloads: 2519 + last_year_trend: 55.24 + last_year_total: 703230 + last_2_years_trend: 103.92 + - + package_name: zendframework/zend-router + last_month_average_daily_downloads: 2204 + last_year_trend: 10.35 + last_year_total: 777840 + last_2_years_trend: 26.33 + - + package_name: zendframework/zend-barcode + last_month_average_daily_downloads: 2159 + last_year_trend: 1.61 + last_year_total: 661680 + last_2_years_trend: 7.02 + - + package_name: zendframework/zendframework + last_month_average_daily_downloads: 2154 + last_year_trend: -2.95 + last_year_total: 774750 + last_2_years_trend: -7.52 + - + package_name: zendframework/zend-dom + last_month_average_daily_downloads: 2056 + last_year_trend: 0.72 + last_year_total: 682620 + last_2_years_trend: 12.64 + - + package_name: zendframework/zend-debug + last_month_average_daily_downloads: 1989 + last_year_trend: 2.46 + last_year_total: 664590 + last_2_years_trend: 13.18 + - + package_name: zendframework/zend-permissions-rbac + last_month_average_daily_downloads: 1950 + last_year_trend: 2.96 + last_year_total: 647790 + last_2_years_trend: 14.35 + - + package_name: zendframework/zend-memory + last_month_average_daily_downloads: 1949 + last_year_trend: 0.56 + last_year_total: 671070 + last_2_years_trend: 3.93 + - + package_name: zendframework/zend-test + last_month_average_daily_downloads: 1890 + last_year_trend: 2.78 + last_year_total: 628470 + last_2_years_trend: 10.67 + - + package_name: zendframework/zend-xmlrpc + last_month_average_daily_downloads: 1887 + last_year_trend: -1.51 + last_year_total: 649950 + last_2_years_trend: -9.57 + - + package_name: zendframework/zend-navigation + last_month_average_daily_downloads: 1819 + last_year_trend: 2.58 + last_year_total: 612000 + last_2_years_trend: 11.99 + - + package_name: zendframework/zend-stratigility + last_month_average_daily_downloads: 1814 + last_year_trend: -2.92 + last_year_total: 641730 + last_2_years_trend: 21.23 + - + package_name: zendframework/zendservice-apple-apns + last_month_average_daily_downloads: 1741 + last_year_trend: 14.8 + last_year_total: 535950 + last_2_years_trend: 28.73 + - + package_name: zendframework/zend-i18n-resources + last_month_average_daily_downloads: 1608 + last_year_trend: 2.22 + last_year_total: 582930 + last_2_years_trend: 9.38 + - + package_name: zendframework/zend-component-installer + last_month_average_daily_downloads: 1575 + last_year_trend: 5.93 + last_year_total: 544590 + last_2_years_trend: 19.85 + - + package_name: zendframework/zend-file + last_month_average_daily_downloads: 1573 + last_year_trend: 0.67 + last_year_total: 554760 + last_2_years_trend: 3.98 + - + package_name: zendframework/zendservice-google-gcm + last_month_average_daily_downloads: 1550 + last_year_trend: 8.14 + last_year_total: 502350 + last_2_years_trend: 16.18 + - + package_name: zendframework/zend-version + last_month_average_daily_downloads: 1524 + last_year_trend: 9.34 + last_year_total: 491610 + last_2_years_trend: 1.75 + - + package_name: zendframework/zend-tag + last_month_average_daily_downloads: 1457 + last_year_trend: 3.99 + last_year_total: 484500 + last_2_years_trend: 4.1 + - + package_name: zendframework/zend-progressbar + last_month_average_daily_downloads: 1419 + last_year_trend: -1.71 + last_year_total: 488100 + last_2_years_trend: 2.18 + - + package_name: zendframework/zend-httphandlerrunner + last_month_average_daily_downloads: 1320 + last_year_trend: 13.72 + last_year_total: 416490 + last_2_years_trend: 53.64 + - + package_name: zendframework/zend-developer-tools + last_month_average_daily_downloads: 1184 + last_year_trend: -1.07 + last_year_total: 403440 + last_2_years_trend: 10.57 + - + package_name: zendframework/zend-expressive-router + last_month_average_daily_downloads: 1164 + last_year_trend: 8.39 + last_year_total: 381540 + last_2_years_trend: 25.87 + - + package_name: zendframework/zend-expressive-template + last_month_average_daily_downloads: 1114 + last_year_trend: 7.12 + last_year_total: 365730 + last_2_years_trend: 24.33 + - + package_name: zendframework/zend-expressive-helpers + last_month_average_daily_downloads: 1090 + last_year_trend: 12.5 + last_year_total: 357000 + last_2_years_trend: 27.61 + - + package_name: zendframework/zend-config-aggregator + last_month_average_daily_downloads: 1065 + last_year_trend: 10.4 + last_year_total: 335040 + last_2_years_trend: 27.13 + - + package_name: zendframework/zend-expressive + last_month_average_daily_downloads: 1055 + last_year_trend: 6.07 + last_year_total: 351450 + last_2_years_trend: 21.4 + - + package_name: zendframework/zend-mvc-console + last_month_average_daily_downloads: 964 + last_year_trend: 9.69 + last_year_total: 345930 + last_2_years_trend: 16.09 + - + package_name: zendframework/zend-mvc-i18n + last_month_average_daily_downloads: 848 + last_year_trend: 0.93 + last_year_total: 305130 + last_2_years_trend: 15.8 + - + package_name: zendframework/zend-mvc-plugin-flashmessenger + last_month_average_daily_downloads: 805 + last_year_trend: 5.38 + last_year_total: 292980 + last_2_years_trend: 11.4 + - + package_name: zendframework/zend-expressive-fastroute + last_month_average_daily_downloads: 775 + last_year_trend: 5.54 + last_year_total: 262800 + last_2_years_trend: 21.31 + - + package_name: zendframework/zendpdf + last_month_average_daily_downloads: 757 + last_year_trend: 8.5 + last_year_total: 248820 + last_2_years_trend: 13.37 + - + package_name: zendframework/zend-mvc-plugin-prg + last_month_average_daily_downloads: 628 + last_year_trend: 6.45 + last_year_total: 218820 + last_2_years_trend: 10.23 + - + package_name: zendframework/zend-mvc-plugin-identity + last_month_average_daily_downloads: 603 + last_year_trend: 3.57 + last_year_total: 210330 + last_2_years_trend: 4.61 + - + package_name: zendframework/zend-mvc-plugin-fileprg + last_month_average_daily_downloads: 569 + last_year_trend: 4.04 + last_year_total: 193920 + last_2_years_trend: 5.33 + - + package_name: zendframework/zend-mvc-plugins + last_month_average_daily_downloads: 517 + last_year_trend: 3.83 + last_year_total: 178620 + last_2_years_trend: 3.46 + yiisoft: + name: Yii + vendor_total_last_month: 53424 + vendor_total_last_year: 17278800 + average_last_year_trend: 4.42 + packages_data: + - + package_name: yiisoft/yii2 + last_month_average_daily_downloads: 7156 + last_year_trend: 8.49 + last_year_total: 2136510 + last_2_years_trend: 20.2 + - + package_name: yiisoft/yii2-composer + last_month_average_daily_downloads: 6474 + last_year_trend: 2.65 + last_year_total: 2115930 + last_2_years_trend: 31.8 + - + package_name: yiisoft/yii2-bootstrap + last_month_average_daily_downloads: 6059 + last_year_trend: 7.94 + last_year_total: 1957560 + last_2_years_trend: 25.05 + - + package_name: yiisoft/yii2-swiftmailer + last_month_average_daily_downloads: 5716 + last_year_trend: 7.86 + last_year_total: 1814400 + last_2_years_trend: 28.79 + - + package_name: yiisoft/yii2-debug + last_month_average_daily_downloads: 5641 + last_year_trend: 11.6 + last_year_total: 1769220 + last_2_years_trend: 23.93 + - + package_name: yiisoft/yii2-gii + last_month_average_daily_downloads: 4502 + last_year_trend: 2.81 + last_year_total: 1493460 + last_2_years_trend: 18.83 + - + package_name: yiisoft/yii2-faker + last_month_average_daily_downloads: 3921 + last_year_trend: -0.73 + last_year_total: 1332930 + last_2_years_trend: 17.16 + - + package_name: yiisoft/yii2-redis + last_month_average_daily_downloads: 2327 + last_year_trend: 12.15 + last_year_total: 713790 + last_2_years_trend: 50.99 + - + package_name: yiisoft/yii2-httpclient + last_month_average_daily_downloads: 2256 + last_year_trend: 9.74 + last_year_total: 785700 + last_2_years_trend: 16.64 + - + package_name: yiisoft/yii2-jui + last_month_average_daily_downloads: 2082 + last_year_trend: 9.1 + last_year_total: 654330 + last_2_years_trend: 22.64 + - + package_name: yiisoft/yii2-queue + last_month_average_daily_downloads: 2054 + last_year_trend: 11.77 + last_year_total: 708000 + last_2_years_trend: 36.01 + - + package_name: yiisoft/yii + last_month_average_daily_downloads: 1430 + last_year_trend: 16.74 + last_year_total: 451380 + last_2_years_trend: 7.21 + - + package_name: yiisoft/yii2-authclient + last_month_average_daily_downloads: 1386 + last_year_trend: -6.76 + last_year_total: 463140 + last_2_years_trend: 15.08 + - + package_name: yiisoft/yii2-imagine + last_month_average_daily_downloads: 1154 + last_year_trend: 2.76 + last_year_total: 381150 + last_2_years_trend: 25.68 + - + package_name: yiisoft/yii2-codeception + last_month_average_daily_downloads: 748 + last_year_trend: -12.56 + last_year_total: 309900 + last_2_years_trend: -31.24 + - + package_name: yiisoft/yii2-app-basic + last_month_average_daily_downloads: 518 + last_year_trend: -12.85 + last_year_total: 191400 + last_2_years_trend: -13.95 + codeigniter: + name: 'Code Igniter' + vendor_total_last_month: 628 + vendor_total_last_year: 186150 + average_last_year_trend: 12.06 + packages_data: + - + package_name: codeigniter/framework + last_month_average_daily_downloads: 628 + last_year_trend: 12.06 + last_year_total: 186150 + last_2_years_trend: 12.33 diff --git a/source/_snippets/footer.twig b/source/_snippets/footer.twig index e50fe17a491..fa524f3705b 100644 --- a/source/_snippets/footer.twig +++ b/source/_snippets/footer.twig @@ -19,6 +19,12 @@

+ + PHP Fw Trends + + + + Build by {{ contributors|length + 1 }} people diff --git a/source/assets/css/style.css b/source/assets/css/style.css index 52530b39bba..9cd539a94c4 100644 --- a/source/assets/css/style.css +++ b/source/assets/css/style.css @@ -585,3 +585,10 @@ table ul { text-align: center; font-size: 2em; } + +.thead-inverse th h3 { + color: #DDD; + margin: 0; + font-size: 2em; + line-height: 1.7em; +} diff --git a/source/contact.twig b/source/contact.twig index 49f91f6b8c3..a1a15fe5bcf 100644 --- a/source/contact.twig +++ b/source/contact.twig @@ -8,7 +8,7 @@ id: contact

{{ title }}

- Let me invite you to a great coffee and let's see how we can help each other → + Let me invite you to a great coffee to see how can I help you

diff --git a/source/php-framework-trends.twig b/source/php-framework-trends.twig new file mode 100644 index 00000000000..608fa6d86b4 --- /dev/null +++ b/source/php-framework-trends.twig @@ -0,0 +1,78 @@ +--- +layout: "_layouts/default.twig" +title: "PHP Framework Trends" +id: trends +--- + +
+

{{ title }}

+ + {% for framework in php_framework_trends %} + + + + + + + + + + + + + {% for package in framework.packages_data %} + + + + + + + + {% endfor %} +
+

{{ framework.name }}

+
Package + Last month Daily +

+ Total {{ framework.vendor_total_last_month|number_format }} +

+
+ Total Last Year +

+ Total {{ framework.vendor_total_last_year|number_format }} +

+
+ Trend Last Year +

+ {{ framework.average_last_year_trend }} % +

+
+ {{ package.package_name }} + + see downloads + + {{ package.last_month_average_daily_downloads|number_format }}{{ package.last_year_total|number_format }} + + {% if package.last_year_trend > 0 %} + + +{{ package.last_year_trend|number_format }} % + + {% else %} + + {{ package.last_year_trend|number_format }} % + + {% endif %} + +
+ +
+
+ {% endfor %} + +

Notes

+ + +
diff --git a/src/ArrayUtils.php b/src/ArrayUtils.php new file mode 100644 index 00000000000..02e124f5009 --- /dev/null +++ b/src/ArrayUtils.php @@ -0,0 +1,34 @@ + 'Nette', + 'symfony' => 'Symfony', + // laravel + 'illuminate' => 'Laravel', + 'cakephp' => 'CakePHP', + // single monorepos + 'zendframework' => 'Zend', + 'yiisoft' => 'Yii', + 'codeigniter' => 'Code Igniter', + ]; + + /** + * @var SymfonyStyle + */ + private $symfonyStyle; + + /** + * @var GeneratedFilesDumper + */ + private $generatedFilesDumper; + + /** + * @var PackageMonthlyDownloadsProvider + */ + private $packageMonthlyDownloadsProvider; + + /** + * @var VendorPackagesProvider + */ + private $vendorPackagesProvider; + + /** + * @var ArrayUtils + */ + private $arrayUtils; + + /** + * @var Statistics + */ + private $statistics; + + public function __construct( + SymfonyStyle $symfonyStyle, + GeneratedFilesDumper $generatedFilesDumper, + PackageMonthlyDownloadsProvider $packageMonthlyDownloadsProvider, + VendorPackagesProvider $vendorPackagesProvider, + ArrayUtils $arrayUtils, + Statistics $statistics + ) { + parent::__construct(); + $this->symfonyStyle = $symfonyStyle; + $this->generatedFilesDumper = $generatedFilesDumper; + $this->packageMonthlyDownloadsProvider = $packageMonthlyDownloadsProvider; + $this->vendorPackagesProvider = $vendorPackagesProvider; + $this->arrayUtils = $arrayUtils; + $this->statistics = $statistics; + } + + protected function configure(): void + { + $this->setName(CommandNaming::classToName(self::class)); + $this->setDescription('Generates downloads stats data for PHP frameworks'); + + // @todo include releases, how often, median + // @todo + // - phpstan + // - phpunit + // - php-cs-fixer + // - php code sniffer + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $vendorData = $this->createVendorData(); + $this->generatedFilesDumper->dump('php_framework_trends', $vendorData); + $this->symfonyStyle->success('Data imported!'); + + return ShellCode::SUCCESS; + } + + /** + * @return mixed[] + */ + private function createVendorData(): array + { + $vendorData = []; + + foreach ($this->frameworkVendorToName as $vendorName => $frameworkName) { + $packagesInVendorJson = $this->vendorPackagesProvider->provideForVendor($vendorName); + + $this->symfonyStyle->title(sprintf('Loading data for "%s" vendor', $vendorName)); + if (! isset($packagesInVendorJson['packageNames'])) { + throw new ShouldNotHappenException(); + } + + $packagesData = []; + foreach ($packagesInVendorJson['packageNames'] as $packageName) { + $monthlyDownloadsFromOldestToNewest = $this->packageMonthlyDownloadsProvider->provideForPackage( + $packageName + ); + + $packageKey = $this->createPackageKey($packageName); + + $lastMonthDailyDownloads = $monthlyDownloadsFromOldestToNewest[0]; + + // few data → skip + if ($lastMonthDailyDownloads <= 500) { + continue; + } + + $lastYearTrend = $this->statistics->resolveTrend($monthlyDownloadsFromOldestToNewest, 12); + if ($lastYearTrend === null) { + continue; + } + + $packageData = [ + 'package_name' => $packageName, + 'last_month_average_daily_downloads' => $lastMonthDailyDownloads, + 'last_year_trend' => $lastYearTrend, + 'last_year_total' => $this->statistics->resolveTotal($monthlyDownloadsFromOldestToNewest, 12), + 'last_2_years_trend' => $this->statistics->resolveTrend($monthlyDownloadsFromOldestToNewest, 24), + ]; + + $packagesData[$packageKey] = $packageData; + } + + $packagesData = $this->sortByLastMonthAverage($packagesData); + + $vendorTotalLastMonth = $this->arrayUtils->getArrayKeySum( + $packagesData, + 'last_month_average_daily_downloads' + ); + $vendorTotalLastYear = $this->arrayUtils->getArrayKeySum($packagesData, 'last_year_total'); + $averageLastYearTrend = $this->arrayUtils->getArrayKeyAverage($packagesData, 'last_year_trend'); + + $vendorData[$vendorName] = [ + 'name' => $frameworkName, + 'updated_at' => (new DateTime())->format('Y-m-d'), + // totals + 'vendor_total_last_month' => $vendorTotalLastMonth, + 'vendor_total_last_year' => $vendorTotalLastYear, + 'average_last_year_trend' => $averageLastYearTrend, + // packages details + 'packages_data' => $packagesData, + ]; + } + + return $vendorData; + } + + private function createPackageKey(string $packageName): string + { + return Strings::replace($packageName, '#(/|-)#', '_'); + } + + /** + * @param mixed[] $packagesData + * @return mixed[] + */ + private function sortByLastMonthAverage(array $packagesData): array + { + usort($packagesData, function (array $firstPackage, array $secondPackage) { + return $secondPackage['last_month_average_daily_downloads'] <=> $firstPackage['last_month_average_daily_downloads']; + }); + + return $packagesData; + } +} diff --git a/src/Exception/ShouldNotHappenException.php b/src/Exception/ShouldNotHappenException.php new file mode 100644 index 00000000000..69a814ad78b --- /dev/null +++ b/src/Exception/ShouldNotHappenException.php @@ -0,0 +1,9 @@ +fileToJsonLoader = $fileToJsonLoader; + } + + public function provideForPackage(string $packageName): array + { + $values = $this->getRawMonthlyDownloadsForPackage($packageName); + + return $this->correctFromPhpStan($values, $packageName); + } + + private function getRawMonthlyDownloadsForPackage(string $packageName): array + { + $url = sprintf(self::URL_DOWNLOAD_STATS, $packageName); + $json = $this->fileToJsonLoader->load($url); + + if (! isset($json['values'])) { + throw new ShouldNotHappenException(); + } + + $values = $json['values']; + // last value is uncompleted month, not needed + array_pop($values); + + // put the highest first to keep convention + return array_reverse($values); + } + + private function correctFromPhpStan(array $monthlyDownloads, string $packageName): array + { + if (! in_array($packageName, $this->phpstanDependencies, true)) { + return $monthlyDownloads; + } + + $phpStanDownloads = $this->getPhpStanDownloads(); + foreach ($monthlyDownloads as $key => $value) { + // too old + if (! isset($phpStanDownloads[$value])) { + break; + } + + // correction here! + $monthlyDownloads[$key] = $value - $phpStanDownloads[$value]; + } + + return $monthlyDownloads; + } + + private function getPhpStanDownloads(): array + { + if ($this->phpStanDownloads !== []) { + return $this->phpStanDownloads; + } + + $this->phpStanDownloads = $this->getRawMonthlyDownloadsForPackage('phpstan/phpstan'); + + return $this->phpStanDownloads; + } +} diff --git a/src/Packagist/VendorPackagesProvider.php b/src/Packagist/VendorPackagesProvider.php new file mode 100644 index 00000000000..d734020de58 --- /dev/null +++ b/src/Packagist/VendorPackagesProvider.php @@ -0,0 +1,30 @@ +fileToJsonLoader = $fileToJsonLoader; + } + + public function provideForVendor(string $vendorName): array + { + $url = sprintf(self::URL_VENDOR_PACKAGES, $vendorName); + + return $this->fileToJsonLoader->load($url); + } +} diff --git a/src/Statistics.php b/src/Statistics.php new file mode 100644 index 00000000000..66c7db103fc --- /dev/null +++ b/src/Statistics.php @@ -0,0 +1,74 @@ +countFirstHalf($values, $halfDuration); + $secondHalf = $this->countSecondHalf($values, $trendSize, $halfDuration); + + if ($secondHalf === 0) { + return null; + } + + $trend = $firstHalf / $secondHalf; + + return round(($trend - 1) * 100, 2); + } + + /** + * @param int[] $values + */ + public function resolveTotal(array $values, int $months): int + { + $total = 0; + + for ($i = 1; $i <= $months; $i++) { + $index = count($values) - $i; + if (! isset($values[$index])) { + break; + } + + // 30 for compensating average of month + $total += $values[$index] * 30; + } + + return $total; + } + + private function countFirstHalf(array $values, int $halfDuration): ?int + { + $firstHalf = 0; + for ($i = 1; $i <= $halfDuration; $i++) { + $index = count($values) - $i; + if (! isset($values[$index])) { + // unable to calculate + return null; + } + + $firstHalf += $values[$index]; + } + + return (int) $firstHalf; + } + + private function countSecondHalf(array $values, int $trendSize, int $halfDuration): ?int + { + $secondHalf = 0; + for ($i = $halfDuration + 1; $i <= $trendSize; $i++) { + $index = count($values) - $i; + if (! isset($values[$index])) { + // unable to calculate + return null; + } + + $secondHalf += $values[$index]; + } + + return (int) $secondHalf; + } +} diff --git a/statie.yaml b/statie.yaml index 1b35519c792..cfdaf31b438 100644 --- a/statie.yaml +++ b/statie.yaml @@ -4,6 +4,13 @@ imports: # enabled on localhost only - { resource: 'statie.local.yaml', ignore_errors: true } +services: + _defaults: + autowire: true + + TomasVotruba\Website\: + resource: 'src' + parameters: post_template_path: 'templates/new_post.twig' @@ -32,4 +39,4 @@ parameters: /blog/2017/03/02/php-u-nas-ceka-rok-expanze: 'https://pehapkari.cz/blog/2017/03/02/php-u-nas-ceka-rok-expanze/' /blog/2017/11/06/wow-to-change-php-code-with-abstract-syntax-tree: '/blog/2017/11/06/how-to-change-php-code-with-abstract-syntax-tree/' /blog/2017/09/15/4-simple-checkers-for-coding-standard-haters-but-clean-code-lovers: '/blog/2017/09/18/4-simple-checkers-for-coding-standard-haters-but-clean-code-lovers' - /blog/2018/03/26/new-easy-coding-standard-4-clean-symfony-standard-with-yaml-and-services/: '/blog/2018/03/26/new-in-easy-coding-standard-4-clean-symfony-standard-with-yaml-and-services/' \ No newline at end of file + /blog/2018/03/26/new-easy-coding-standard-4-clean-symfony-standard-with-yaml-and-services/: '/blog/2018/03/26/new-in-easy-coding-standard-4-clean-symfony-standard-with-yaml-and-services/'