{"id":2053,"date":"2017-01-31T11:52:31","date_gmt":"2017-01-31T19:52:31","guid":{"rendered":"https:\/\/hellbach.us\/blog\/?p=2053"},"modified":"2017-01-31T11:56:58","modified_gmt":"2017-01-31T19:56:58","slug":"20-awesome-php-libraries-early-2017","status":"publish","type":"post","link":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/","title":{"rendered":"20 Awesome PHP Libraries For Early 2017"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:336,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/rmccue\\\/Requests&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20201220171910\\\/https:\\\/\\\/github.com\\\/rmccue\\\/Requests&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:14&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-25 16:01:17&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:01&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 23:03:58&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-25 05:05:08&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-25 05:05:08&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:337,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/rinvex\\\/country&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20170315001907\\\/https:\\\/\\\/github.com\\\/rinvex\\\/country&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:02&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-03-26 23:03:57&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-25 05:05:08&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-25 05:05:08&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:338,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/mpociot\\\/botman&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/github.com\\\/botman\\\/botman&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:339,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/mpociot\\\/botman-laravel-starter&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/github.com\\\/botman\\\/studio&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:340,&quot;href&quot;:&quot;http:\\\/\\\/tutorialzine.com\\\/2016\\\/11\\\/introduction-to-chatbots&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250720070816\\\/https:\\\/\\\/tutorialzine.com\\\/2016\\\/11\\\/introduction-to-chatbots&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-12 01:25:00&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:00&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:341,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/ConsoleTVs\\\/Charts&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250914082928\\\/https:\\\/\\\/github.com\\\/ConsoleTVs\\\/Charts&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:02&quot;,&quot;http_code&quot;:503}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:02&quot;,&quot;http_code&quot;:503},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:342,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/florianv\\\/swap&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250812122832\\\/https:\\\/\\\/github.com\\\/florianv\\\/swap&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:55&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:11&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:11&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:343,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/florianv\\\/laravel-swap&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20241007123831\\\/https:\\\/\\\/github.com\\\/florianv\\\/laravel-swap&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:56:57&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:12&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:12&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:344,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/markrogoyski\\\/math-php&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250924111032\\\/https:\\\/\\\/github.com\\\/markrogoyski\\\/math-php&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:57:01&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:345,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/sebastianbergmann\\\/phpunit&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251009003827\\\/https:\\\/\\\/github.com\\\/sebastianbergmann\\\/phpunit&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:57:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:346,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/atoum\\\/atoum&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:347,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-PHP&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250829200104\\\/https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-PHP&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:57:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:10&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:348,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-JavaScript&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20231002092603\\\/https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-JavaScript&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:57:15&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 19:57:15&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:349,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-Python&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20231205071050\\\/https:\\\/\\\/github.com\\\/SimpleRegex\\\/SRL-Python&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:02&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 19:58:02&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:350,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/tedious\\\/Stash&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250906051017\\\/https:\\\/\\\/github.com\\\/tedious\\\/Stash&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:03&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:14&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:14&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:351,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/php-vcr\\\/php-vcr&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251002153658\\\/https:\\\/\\\/github.com\\\/php-vcr\\\/php-vcr&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:05&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:15&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:15&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:352,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/vcr\\\/vcr&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251002153700\\\/https:\\\/\\\/github.com\\\/vcr\\\/vcr\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:06&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 01:25:14&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-02-12 01:25:14&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:353,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/thephpleague\\\/oauth2-server&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250930053503\\\/https:\\\/\\\/github.com\\\/thephpleague\\\/oauth2-server&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:08&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 19:58:08&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:354,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/laravel\\\/passport&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:355,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/avalanche123\\\/Imagine&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20210912020235\\\/https:\\\/\\\/github.com\\\/avalanche123\\\/Imagine&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 19:58:19&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 19:58:19&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:356,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/panique\\\/mini&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250323012935\\\/https:\\\/\\\/github.com\\\/panique\\\/mini&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:06&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:06&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:357,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/aws\\\/aws-sdk-php&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251004200453\\\/https:\\\/\\\/github.com\\\/aws\\\/aws-sdk-php&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:08&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:08&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:358,&quot;href&quot;:&quot;https:\\\/\\\/aws.amazon.com&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251118171851\\\/https:\\\/\\\/aws.amazon.com\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:09&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:09&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:359,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/aws\\\/aws-sdk-php-laravel&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250911200323\\\/https:\\\/\\\/github.com\\\/aws\\\/aws-sdk-php-laravel&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:10&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:10&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:360,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/jwage\\\/purl&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250927181925\\\/https:\\\/\\\/github.com\\\/jwage\\\/purl&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:15&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:15&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:361,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/justinwalsh\\\/daux.io&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250812215620\\\/https:\\\/\\\/github.com\\\/justinwalsh\\\/daux.io&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:17&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:17&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:362,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/dompdf\\\/dompdf&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250928051815\\\/https:\\\/\\\/github.com\\\/dompdf\\\/dompdf&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:19&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:19&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:363,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/sesser\\\/Instaphp&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20200904203314\\\/https:\\\/\\\/github.com\\\/sesser\\\/Instaphp\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:22&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:22&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:364,&quot;href&quot;:&quot;https:\\\/\\\/www.instagram.com\\\/developer&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20220624222241\\\/https:\\\/\\\/www.instagram.com\\\/developer\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:23&quot;,&quot;http_code&quot;:400}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2025-11-18 20:00:23&quot;,&quot;http_code&quot;:400},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:365,&quot;href&quot;:&quot;https:\\\/\\\/github.com\\\/shadowhand\\\/latitude&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250827205747\\\/https:\\\/\\\/github.com\\\/shadowhand\\\/latitude&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-24 05:51:53&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-24 05:51:53&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:366,&quot;href&quot;:&quot;http:\\\/\\\/tutorialzine.com\\\/2017\\\/01\\\/20-awesome-php-libraries-for-early-2017&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250918201321\\\/https:\\\/\\\/tutorialzine.com\\\/2017\\\/01\\\/20-awesome-php-libraries-for-early-2017&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-11-18 20:00:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-24 05:51:53&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-24 05:51:53&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<style>\n.hljs-variable, .hljs-attribute, .hljs-tag, .hljs-regexp, .ruby .hljs-constant, .xml .hljs-tag .hljs-title, .xml .hljs-pi, .xml .hljs-doctype, .html .hljs-doctype, .css .hljs-id, .css .hljs-class, .css .hljs-pseudo {<br \/>    color: #c82829;<br \/>}<br \/>.hljs-string, .hljs-value, .hljs-inheritance, .hljs-header, .hljs-name, .ruby .hljs-symbol, .xml .hljs-cdata {<br \/>    color: #718c00;<br \/>}<br \/>.hljs-keyword, .javascript .hljs-function {<br \/>    color: #8959a8;<br \/>}<br \/><\/style>\n<p>This week we have for you a collection of high-quality PHP libraries that have caught our eye in the last couple of months. We\u2019ve tried our best to include projects that are active, well documented, and will have a realistic shot at finding a place in your developer\u2019s workbelt.<\/p>\n<p>If we\u2019ve haven\u2019t included your favorite new library, feel free to share it in the comments \ud83d\ude42<\/p>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/rmccue\/Requests\" target=\"_blank\" rel=\"nofollow\">Requests for PHP<\/a><\/h3>\n<p>A no-dependencies library that lets you send HTTP requests. It provides the needed methods for adding headers, accessing response data, handling forms, and everything else you may need, neatly packaged in a clean and easy to use API.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$headers<\/span> = <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">'Accept'<\/span> =&gt; <span class=\"hljs-string\">'application\/json'<\/span>);\r\n<span class=\"hljs-variable\">$options<\/span> = <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">'auth'<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(<span class=\"hljs-string\">'user'<\/span>, <span class=\"hljs-string\">'pass'<\/span>));\r\n<span class=\"hljs-variable\">$request<\/span> = Requests::get(<span class=\"hljs-string\">'https:\/\/api.github.com\/gists'<\/span>, <span class=\"hljs-variable\">$headers<\/span>, <span class=\"hljs-variable\">$options<\/span>);\r\n\r\nvar_dump(<span class=\"hljs-variable\">$request<\/span>-&gt;status_code);\r\n<span class=\"hljs-comment\">\/\/ int(200)<\/span>\r\n\r\nvar_dump(<span class=\"hljs-variable\">$request<\/span>-&gt;headers[<span class=\"hljs-string\">'content-type'<\/span>]);\r\n<span class=\"hljs-comment\">\/\/ string(31) \"application\/json; charset=utf-8\"<\/span>\r\n\r\nvar_dump(<span class=\"hljs-variable\">$request<\/span>-&gt;body);\r\n<span class=\"hljs-comment\">\/\/ string(26891) \"[...]\"<\/span><\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/rinvex\/country\" target=\"_blank\" rel=\"nofollow\">Rinvex Country<\/a><\/h3>\n<p>Rinvex Country is a PHP package that lets developers retrieve detailed information about the countries of the world. Using the over 50 methods you can get the area of Angola, the currency of Cyprus, the native name of Namibia or even the FIFA name of Finland. There is a ton of info available and the data sources are pretty reliable.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$egypt<\/span> = country(<span class=\"hljs-string\">'eg'<\/span>);\r\n\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getCapital();   <span class=\"hljs-comment\">\/\/ Cairo<\/span>\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getDemonym();   <span class=\"hljs-comment\">\/\/ Egyptian<\/span>\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getTld();       <span class=\"hljs-comment\">\/\/ .eg<\/span>\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getContinent(); <span class=\"hljs-comment\">\/\/ Africa<\/span>\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getSubregion(); <span class=\"hljs-comment\">\/\/ Northern Africa<\/span>\r\n<span class=\"hljs-variable\">$egypt<\/span>-&gt;getBorders();   <span class=\"hljs-comment\">\/\/ [\"ISR\",\"LBY\",\"SDN\"]<\/span><\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/mpociot\/botman\" target=\"_blank\" rel=\"nofollow\">Botman<\/a><\/h3>\n<p>A PHP library for developing messenger bots. Works with most of the popular messaging platforms including Facebook Messenger, Slack, Telegram, WeChat, and others. There is also a helpful boilerplate Laravel project available <a href=\"https:\/\/github.com\/mpociot\/botman-laravel-starter\" target=\"_blank\" rel=\"nofollow\">here<\/a>.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ create an instance<\/span>\r\n<span class=\"hljs-variable\">$botman<\/span> = BotManFactory::create(<span class=\"hljs-variable\">$config<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ give the bot something to listen for.<\/span>\r\n<span class=\"hljs-variable\">$botman<\/span>-&gt;hears(<span class=\"hljs-string\">'hello'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(BotMan <span class=\"hljs-variable\">$bot<\/span>)<\/span> <\/span>{\r\n    <span class=\"hljs-variable\">$bot<\/span>-&gt;reply(<span class=\"hljs-string\">'Hello yourself.'<\/span>);\r\n});\r\n\r\n<span class=\"hljs-comment\">\/\/ start listening<\/span>\r\n<span class=\"hljs-variable\">$botman<\/span>-&gt;listen();<\/code><\/pre>\n<p>If you are not familiar with the concept of messenger bots we suggest you check out our article <a href=\"http:\/\/tutorialzine.com\/2016\/11\/introduction-to-chatbots\/\" rel=\"nofollow\">Developer\u2019s Introduction To Chatbots<\/a>.<\/p>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/ConsoleTVs\/Charts\" target=\"_blank\" rel=\"nofollow\">Charts<\/a><\/h3>\n<p>Laravel package for generating highly customizable charts out of datasets. The package works as a PHP wrapper for multiple built-in JavaScript chart libraries, allowing devs to create a wide variety of graphs, gauges and progressbars using only one tool.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$chart<\/span> = Charts::create(<span class=\"hljs-string\">'line'<\/span>, <span class=\"hljs-string\">'highcharts'<\/span>)\r\n    -&gt;view(<span class=\"hljs-string\">'custom.line.chart.view'<\/span>) \r\n    -&gt;title(<span class=\"hljs-string\">'My nice chart'<\/span>)\r\n    -&gt;labels([<span class=\"hljs-string\">'First'<\/span>, <span class=\"hljs-string\">'Second'<\/span>, <span class=\"hljs-string\">'Third'<\/span>])\r\n    -&gt;values([<span class=\"hljs-number\">5<\/span>,<span class=\"hljs-number\">10<\/span>,<span class=\"hljs-number\">20<\/span>])\r\n    -&gt;dimensions(<span class=\"hljs-number\">1000<\/span>,<span class=\"hljs-number\">500<\/span>)\r\n    -&gt;responsive(<span class=\"hljs-keyword\">false<\/span>);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/florianv\/swap\/\" target=\"_blank\" rel=\"nofollow\">Swap<\/a><\/h3>\n<p>Swap allows you to retrieve currency exchange rates from a number of services such as Fixer, Google, and Yahoo. Request responses can be easily cached and accessed later. The library is available in the form of a <a href=\"https:\/\/github.com\/florianv\/laravel-swap\" target=\"_blank\" rel=\"nofollow\">Laravel Package<\/a> as well.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Build Swap with Fixer.io<\/span>\r\n<span class=\"hljs-variable\">$swap<\/span> = (<span class=\"hljs-keyword\">new<\/span> Builder())\r\n    -&gt;add(<span class=\"hljs-string\">'fixer'<\/span>)\r\n    -&gt;build();\r\n    \r\n<span class=\"hljs-comment\">\/\/ Get the latest EUR\/USD rate<\/span>\r\n<span class=\"hljs-variable\">$rate<\/span> = <span class=\"hljs-variable\">$swap<\/span>-&gt;latest(<span class=\"hljs-string\">'EUR\/USD'<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ 1.129<\/span>\r\n<span class=\"hljs-variable\">$rate<\/span>-&gt;getValue();\r\n\r\n<span class=\"hljs-comment\">\/\/ Get the EUR\/USD rate 15 days ago<\/span>\r\n<span class=\"hljs-variable\">$rate<\/span> = <span class=\"hljs-variable\">$swap<\/span>-&gt;historical(<span class=\"hljs-string\">'EUR\/USD'<\/span>, (<span class=\"hljs-keyword\">new<\/span> \\DateTime())-&gt;modify(<span class=\"hljs-string\">'-15 days'<\/span>));<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/markrogoyski\/math-php\" target=\"_blank\" rel=\"nofollow\">Math PHP<\/a><\/h3>\n<p>A collection of mathematical functions and algorithms ranging from simple algebra to finances, statistics, numerical analysis and others fields. The library is modular, has a straightforward API, and doesn\u2019t require any external dependencies.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Factors of an integer<\/span>\r\n<span class=\"hljs-variable\">$factors<\/span> = Algebra::factors(<span class=\"hljs-variable\">$n<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Fibonacci sequence<\/span>\r\n<span class=\"hljs-variable\">$fib<\/span> = Advanced::fibonacci(<span class=\"hljs-variable\">$n<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Combinations<\/span>\r\n<span class=\"hljs-variable\">$nCk<\/span>  = Combinatorics::combinations(<span class=\"hljs-variable\">$n<\/span>, <span class=\"hljs-variable\">$k<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Likelihood ratios<\/span>\r\n<span class=\"hljs-variable\">$LL<\/span> = Experiment::likelihoodRatio(<span class=\"hljs-variable\">$a<\/span>, <span class=\"hljs-variable\">$b<\/span>, <span class=\"hljs-variable\">$c<\/span>, <span class=\"hljs-variable\">$d<\/span>);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/sebastianbergmann\/phpunit\" target=\"_blank\" rel=\"nofollow\">PHPUnit<\/a><\/h3>\n<p>PHPUnit is an advanced testing framework that enables teams to thoroughly test their code. Unit tests are written in standalone object-oriented classes with the help of many methods for handling assertions, dependencies, etc. A simple CLI is provided for running test and generating reports.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \"><code class=\"php hljs\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">StackTest<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">TestCase<\/span>\r\n<\/span>{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">testPushAndPop<\/span><span class=\"hljs-params\">()<\/span>\r\n    <\/span>{\r\n        <span class=\"hljs-variable\">$stack<\/span> = [];\r\n        <span class=\"hljs-variable\">$this<\/span>-&gt;assertEquals(<span class=\"hljs-number\">0<\/span>, count(<span class=\"hljs-variable\">$stack<\/span>));\r\n\r\n        array_push(<span class=\"hljs-variable\">$stack<\/span>, <span class=\"hljs-string\">'foo'<\/span>);\r\n        <span class=\"hljs-variable\">$this<\/span>-&gt;assertEquals(<span class=\"hljs-string\">'foo'<\/span>, <span class=\"hljs-variable\">$stack<\/span>[count(<span class=\"hljs-variable\">$stack<\/span>)-<span class=\"hljs-number\">1<\/span>]);\r\n        <span class=\"hljs-variable\">$this<\/span>-&gt;assertEquals(<span class=\"hljs-number\">1<\/span>, count(<span class=\"hljs-variable\">$stack<\/span>));\r\n\r\n        <span class=\"hljs-variable\">$this<\/span>-&gt;assertEquals(<span class=\"hljs-string\">'foo'<\/span>, array_pop(<span class=\"hljs-variable\">$stack<\/span>));\r\n        <span class=\"hljs-variable\">$this<\/span>-&gt;assertEquals(<span class=\"hljs-number\">0<\/span>, count(<span class=\"hljs-variable\">$stack<\/span>));\r\n    }\r\n}<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/atoum\/atoum\" target=\"_blank\" rel=\"nofollow\">Atoum<\/a><\/h3>\n<p>A less popular testing framework we also wanted to share. Atoum offers a one-step installation precess and a relatively simple workflow, while still maintaining a ton of great features. It has a mock engine, expressive assertions, and a CLI that can execute multiple tests in parallel.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$this<\/span>-&gt;given(<span class=\"hljs-variable\">$testedInstance<\/span> = <span class=\"hljs-keyword\">new<\/span> testedClass())\r\n    -&gt;and(<span class=\"hljs-variable\">$testedClass<\/span>[] = <span class=\"hljs-variable\">$firstValue<\/span> = uniqid())\r\n    -&gt;then\r\n        -&gt;sizeof(<span class=\"hljs-variable\">$testedInstance<\/span>)-&gt;isEqualTo(<span class=\"hljs-number\">1<\/span>)\r\n        -&gt;string(<span class=\"hljs-variable\">$testedClass<\/span>[<span class=\"hljs-number\">0<\/span>])-&gt;isEqualTo(<span class=\"hljs-variable\">$firstValue<\/span>);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/SimpleRegex\/SRL-PHP\" target=\"_blank\" rel=\"nofollow\">Simple Regex Language<\/a><\/h3>\n<p>A PHP implementation of the Simple Regex Language \u2013 a verbose way of writing regular expressions. The library provides multiple methods that can be chained together, forming readable and easy to understand RegEx rules. The library has ports for <a href=\"https:\/\/github.com\/SimpleRegex\/SRL-JavaScript\" target=\"_blank\" rel=\"nofollow\">JavaScript<\/a> and <a href=\"https:\/\/github.com\/SimpleRegex\/SRL-Python\" target=\"_blank\" rel=\"nofollow\">Python<\/a> as well.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$query<\/span> = SRL::startsWith()\r\n    -&gt;anyOf(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(Builder <span class=\"hljs-variable\">$query<\/span>)<\/span> <\/span>{\r\n        <span class=\"hljs-variable\">$query<\/span>-&gt;digit()\r\n            -&gt;letter()\r\n            -&gt;oneOf(<span class=\"hljs-string\">'._%+-'<\/span>);\r\n    })-&gt;onceOrMore()\r\n    -&gt;literally(<span class=\"hljs-string\">'@'<\/span>)\r\n    -&gt;anyOf(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(Builder <span class=\"hljs-variable\">$query<\/span>)<\/span> <\/span>{\r\n        <span class=\"hljs-variable\">$query<\/span>-&gt;digit()\r\n            -&gt;letter()\r\n            -&gt;oneOf(<span class=\"hljs-string\">'.-'<\/span>);\r\n    })-&gt;onceOrMore()\r\n    -&gt;literally(<span class=\"hljs-string\">'.'<\/span>)\r\n    -&gt;letter()-&gt;atLeast(<span class=\"hljs-number\">2<\/span>)\r\n    -&gt;mustEnd()-&gt;caseInsensitive();<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/tedious\/Stash\" target=\"_blank\" rel=\"nofollow\">Stash<\/a><\/h3>\n<p>Stash makes it easy to speed up your code by caching the results of expensive functions or code. Certain actions, like database queries or calls to external APIs, take a lot of time to run but tend to have the same results over short periods of time. This makes it much more efficient to store the results and call them back up later.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$pool<\/span> = <span class=\"hljs-variable\">$this<\/span>-&gt;cachePool;\r\n\r\n<span class=\"hljs-comment\">\/\/ Get a Stash object from the cache pool.<\/span>\r\n<span class=\"hljs-variable\">$item<\/span> = <span class=\"hljs-variable\">$pool<\/span>-&gt;getItem(<span class=\"hljs-string\">\"\/user\/{$userId}\/info\"<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Get the data from it, if any happens to be there.<\/span>\r\n<span class=\"hljs-variable\">$userInfo<\/span> = <span class=\"hljs-variable\">$item<\/span>-&gt;get();\r\n\r\n<span class=\"hljs-comment\">\/\/ Check to see if the cache missed, which could mean that it either<\/span>\r\n<span class=\"hljs-comment\">\/\/ didn't exist or was stale.<\/span>\r\n<span class=\"hljs-keyword\">if<\/span>(<span class=\"hljs-variable\">$item<\/span>-&gt;isMiss())\r\n{\r\n    <span class=\"hljs-comment\">\/\/ Run the relatively expensive code.<\/span>\r\n    <span class=\"hljs-variable\">$userInfo<\/span> = loadUserInfoFromDatabase(<span class=\"hljs-variable\">$userId<\/span>);\r\n\r\n    <span class=\"hljs-comment\">\/\/ Set the new value in $item.<\/span>\r\n    <span class=\"hljs-variable\">$item<\/span>-&gt;set(<span class=\"hljs-variable\">$userInfo<\/span>);\r\n\r\n    <span class=\"hljs-comment\">\/\/ Store the expensive code so the next time it doesn't miss.<\/span>\r\n    <span class=\"hljs-variable\">$pool<\/span>-&gt;save(<span class=\"hljs-variable\">$item<\/span>)\r\n}<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/php-vcr\/php-vcr\" target=\"_blank\" rel=\"nofollow\">PHP VCR<\/a><\/h3>\n<p>A port of the popular <a href=\"https:\/\/github.com\/vcr\/vcr\" target=\"_blank\" rel=\"nofollow\">Ruby library<\/a> for testing HTTP interactions. PHP VCR records HTTP requests and stores them in \u201ccassettes\u201d which can be replayed later on. A set of testing utilities are also provided, making it possible to inspect and compare recordings in detail.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ After turning on, the VCR will intercept all requests<\/span>\r\n\\VCR\\VCR::turnOn();\r\n\r\n<span class=\"hljs-comment\">\/\/ Record requests and responses in cassette file 'example'<\/span>\r\n\\VCR\\VCR::insertCassette(<span class=\"hljs-string\">'example'<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Following request will be recorded once and replayed in future test runs<\/span>\r\n<span class=\"hljs-variable\">$result<\/span> = file_get_contents(<span class=\"hljs-string\">'http:\/\/example.com'<\/span>);\r\n<span class=\"hljs-variable\">$this<\/span>-&gt;assertNotEmpty(<span class=\"hljs-variable\">$result<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ To stop recording requests, eject the cassette<\/span>\r\n\\VCR\\VCR::eject();\r\n\r\n<span class=\"hljs-comment\">\/\/ Turn off VCR to stop intercepting requests<\/span>\r\n\\VCR\\VCR::turnOff();<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/thephpleague\/oauth2-server\" target=\"_blank\" rel=\"nofollow\">OAuth 2.0 Server<\/a><\/h3>\n<p>This library allows you to easily configure an OAuth 2.0 server and set up all the authentication levels needed to protect your API. It is fully standards compliant and supports all the grants defined by OAuth protocol. The <a href=\"https:\/\/github.com\/laravel\/passport\" target=\"_blank\" rel=\"nofollow\">Laravel Passport<\/a> module is built on top of the OAuth 2.0 Server.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Setup the authorization server<\/span>\r\n<span class=\"hljs-variable\">$server<\/span> = <span class=\"hljs-keyword\">new<\/span> \\League\\OAuth2\\Server\\AuthorizationServer(\r\n    <span class=\"hljs-variable\">$clientRepository<\/span>,\r\n    <span class=\"hljs-variable\">$accessTokenRepository<\/span>,\r\n    <span class=\"hljs-variable\">$scopeRepository<\/span>,\r\n    <span class=\"hljs-variable\">$privateKey<\/span>,\r\n    <span class=\"hljs-variable\">$publicKey<\/span>\r\n);\r\n\r\n<span class=\"hljs-comment\">\/\/ Enable a grant on the server<\/span>\r\n<span class=\"hljs-variable\">$server<\/span>-&gt;enableGrantType(\r\n    <span class=\"hljs-keyword\">new<\/span> \\League\\OAuth2\\Server\\Grant\\ClientCredentialsGrant(),\r\n    <span class=\"hljs-keyword\">new<\/span> \\DateInterval(<span class=\"hljs-string\">'PT1H'<\/span>) <span class=\"hljs-comment\">\/\/ access tokens will expire after 1 hour<\/span>\r\n);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/avalanche123\/Imagine\" target=\"_blank\" rel=\"nofollow\">Imagine<\/a><\/h3>\n<p>An image manipulation library that tries to bring together all low level PHP image processing libraries under the same object-oriented API. This allows Imagine to be used for a wide variety of tasks such as drawing, resizing, cropping, filters, effects, metadata editing, and others.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$palette<\/span> = <span class=\"hljs-keyword\">new<\/span> Imagine\\Image\\Palette\\RGB();\r\n\r\n<span class=\"hljs-variable\">$image<\/span> = <span class=\"hljs-variable\">$imagine<\/span>-&gt;create(<span class=\"hljs-keyword\">new<\/span> Box(<span class=\"hljs-number\">400<\/span>, <span class=\"hljs-number\">300<\/span>), <span class=\"hljs-variable\">$palette<\/span>-&gt;color(<span class=\"hljs-string\">'#000'<\/span>));\r\n\r\n<span class=\"hljs-variable\">$image<\/span>-&gt;draw()\r\n    -&gt;ellipse(<span class=\"hljs-keyword\">new<\/span> Point(<span class=\"hljs-number\">200<\/span>, <span class=\"hljs-number\">150<\/span>), <span class=\"hljs-keyword\">new<\/span> Box(<span class=\"hljs-number\">300<\/span>, <span class=\"hljs-number\">225<\/span>), <span class=\"hljs-variable\">$image<\/span>-&gt;palette()-&gt;color(<span class=\"hljs-string\">'fff'<\/span>));\r\n\r\n<span class=\"hljs-variable\">$image<\/span>-&gt;save(<span class=\"hljs-string\">'\/path\/to\/ellipse.png'<\/span>);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/panique\/mini\" target=\"_blank\" rel=\"nofollow\">MINI<\/a><\/h3>\n<p>Extremely simple and easy to understand skeleton PHP application, providing only the most essential features every project needs. It does not strive to be a do-it-all framework like Laravel, but due to it\u2019s simplicity MINI can be used for getting smaller apps up and running in no time.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Working with the model<\/span>\r\n<span class=\"hljs-variable\">$songs<\/span> = <span class=\"hljs-variable\">$this<\/span>-&gt;model-&gt;getAllSongs();\r\n<span class=\"hljs-variable\">$amount_of_songs<\/span> = <span class=\"hljs-variable\">$this<\/span>-&gt;model-&gt;getAmountOfSongs();\r\n\r\n<span class=\"hljs-comment\">\/\/ Loading views<\/span>\r\n<span class=\"hljs-keyword\">require<\/span> APP . <span class=\"hljs-string\">'views\/_templates\/header.php'<\/span>;\r\n<span class=\"hljs-keyword\">require<\/span> APP . <span class=\"hljs-string\">'views\/songs\/index.php'<\/span>;\r\n<span class=\"hljs-keyword\">require<\/span> APP . <span class=\"hljs-string\">'views\/_templates\/footer.php'<\/span>;<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/aws\/aws-sdk-php\" target=\"_blank\" rel=\"nofollow\">AWS SDK<\/a><\/h3>\n<p>The official PHP library for working with <a href=\"https:\/\/aws.amazon.com\/\" target=\"_blank\" rel=\"nofollow\">Amazon Web Services<\/a>. The SDK makes it easy to connect AWS with any PHP project and access all the various available services. There is also a useful Laravel wrapper which can be found <a href=\"https:\/\/github.com\/aws\/aws-sdk-php-laravel\" target=\"_blank\" rel=\"nofollow\">here<\/a>.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Instantiate an Amazon S3 client.<\/span>\r\n<span class=\"hljs-variable\">$s3<\/span> = <span class=\"hljs-keyword\">new<\/span> S3Client([\r\n    <span class=\"hljs-string\">'version'<\/span> =&gt; <span class=\"hljs-string\">'latest'<\/span>,\r\n    <span class=\"hljs-string\">'region'<\/span>  =&gt; <span class=\"hljs-string\">'us-west-2'<\/span>\r\n]);\r\n\r\n<span class=\"hljs-variable\">$s3<\/span>-&gt;putObject([\r\n    <span class=\"hljs-string\">'Bucket'<\/span> =&gt; <span class=\"hljs-string\">'my-bucket'<\/span>,\r\n    <span class=\"hljs-string\">'Key'<\/span>    =&gt; <span class=\"hljs-string\">'my-object'<\/span>,\r\n    <span class=\"hljs-string\">'Body'<\/span>   =&gt; fopen(<span class=\"hljs-string\">'\/path\/to\/file'<\/span>, <span class=\"hljs-string\">'r'<\/span>),\r\n    <span class=\"hljs-string\">'ACL'<\/span>    =&gt; <span class=\"hljs-string\">'public-read'<\/span>,\r\n]);<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/jwage\/purl\" target=\"_blank\" rel=\"nofollow\">Purl<\/a><\/h3>\n<p>Lightweight PHP library for working with URLs. With Purl you can compose complex paths attribute by attribute, extract data from URLs, manipulate queries, recognize URLs in strings, and much more.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$url<\/span> = \\Purl\\Url::parse(<span class=\"hljs-string\">'http:\/\/jwage.com'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'scheme'<\/span>, <span class=\"hljs-string\">'https'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'port'<\/span>, <span class=\"hljs-string\">'443'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'user'<\/span>, <span class=\"hljs-string\">'jwage'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'pass'<\/span>, <span class=\"hljs-string\">'password'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'path'<\/span>, <span class=\"hljs-string\">'about\/me'<\/span>)\r\n    -&gt;set(<span class=\"hljs-string\">'query'<\/span>, <span class=\"hljs-string\">'param1=value1&amp;param2=value2'<\/span>);\r\n\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$url<\/span>-&gt;getUrl(); <span class=\"hljs-comment\">\/\/ https:\/\/jwage:password@jwage.com:443\/about\/me?param1=value1&amp;param2=value2<\/span>\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$url<\/span>-&gt;publicSuffix; <span class=\"hljs-comment\">\/\/ com<\/span>\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$url<\/span>-&gt;registerableDomain; <span class=\"hljs-comment\">\/\/ jwage.com<\/span><\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/justinwalsh\/daux.io\" target=\"_blank\" rel=\"nofollow\">Daux.io<\/a><\/h3>\n<p>Documentation generator that uses a simple folder structure and Markdown files to create responsive documentation websites. Daux.io has automatic syntax highlighting, 4 theming options, Bootstrap HTML for easy customization, navigation with readable URLs, and many other goodies.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ Example configuration<\/span>\r\n{\r\n    <span class=\"hljs-string\">\"title\"<\/span>: <span class=\"hljs-string\">\"DAUX.IO\"<\/span>,\r\n    <span class=\"hljs-string\">\"tagline\"<\/span>: <span class=\"hljs-string\">\"The Easiest Way To Document Your Project\"<\/span>,\r\n    <span class=\"hljs-string\">\"author\"<\/span>: <span class=\"hljs-string\">\"Justin Walsh\"<\/span>,\r\n    <span class=\"hljs-string\">\"image\"<\/span>: <span class=\"hljs-string\">\"app.png\"<\/span>,\r\n    <span class=\"hljs-string\">\"html\"<\/span>: {\r\n        <span class=\"hljs-string\">\"theme\"<\/span>: <span class=\"hljs-string\">\"daux-blue\"<\/span>,\r\n        <span class=\"hljs-string\">\"breadcrumbs\"<\/span>: <span class=\"hljs-keyword\">true<\/span>,\r\n        <span class=\"hljs-string\">\"repo\"<\/span>: <span class=\"hljs-string\">\"justinwalsh\/daux.io\"<\/span>,\r\n        <span class=\"hljs-string\">\"edit_on_github\"<\/span>: <span class=\"hljs-string\">\"justinwalsh\/daux.io\/blob\/master\/docs\"<\/span>,\r\n        <span class=\"hljs-string\">\"twitter\"<\/span>: [<span class=\"hljs-string\">\"justin_walsh\"<\/span>, <span class=\"hljs-string\">\"todaymade\"<\/span>],\r\n        <span class=\"hljs-string\">\"google_analytics\"<\/span>: <span class=\"hljs-string\">\"UA-12653604-10\"<\/span>,\r\n        <span class=\"hljs-string\">\"links\"<\/span>: {\r\n            <span class=\"hljs-string\">\"Download\"<\/span>: <span class=\"hljs-string\">\"https:\/\/github.com\/justinwalsh\/daux.io\/archive\/master.zip\"<\/span>,\r\n            <span class=\"hljs-string\">\"GitHub Repo\"<\/span>: <span class=\"hljs-string\">\"https:\/\/github.com\/justinwalsh\/daux.io\"<\/span>,\r\n            <span class=\"hljs-string\">\"Made by Todaymade\"<\/span>: <span class=\"hljs-string\">\"http:\/\/todaymade.com\"<\/span>\r\n        }\r\n    }\r\n}<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/dompdf\/dompdf\" target=\"_blank\" rel=\"nofollow\">Dompdf<\/a><\/h3>\n<p>Dompdf is a PDF generator that takes regular HTML markup and converts it to .pdf files. It understands most CSS rules, which can be fed in-line or via an external stylesheet.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \"><code class=\"php hljs\"><span class=\"hljs-comment\">\/\/ reference the Dompdf namespace<\/span>\r\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Dompdf<\/span>\\<span class=\"hljs-title\">Dompdf<\/span>;\r\n\r\n<span class=\"hljs-comment\">\/\/ instantiate and use the dompdf class<\/span>\r\n<span class=\"hljs-variable\">$dompdf<\/span> = <span class=\"hljs-keyword\">new<\/span> Dompdf();\r\n<span class=\"hljs-variable\">$dompdf<\/span>-&gt;loadHtml(<span class=\"hljs-string\">'hello world'<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ (Optional) Setup the paper size and orientation<\/span>\r\n<span class=\"hljs-variable\">$dompdf<\/span>-&gt;setPaper(<span class=\"hljs-string\">'A4'<\/span>, <span class=\"hljs-string\">'landscape'<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ Render the HTML as PDF<\/span>\r\n<span class=\"hljs-variable\">$dompdf<\/span>-&gt;render();\r\n\r\n<span class=\"hljs-comment\">\/\/ Output the generated PDF to Browser<\/span>\r\n<span class=\"hljs-variable\">$dompdf<\/span>-&gt;stream();<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/sesser\/Instaphp\" target=\"_blank\" rel=\"nofollow\">Instaphp<\/a><\/h3>\n<p>Non-official library for accessing the <a href=\"https:\/\/www.instagram.com\/developer\/\" target=\"_blank\" rel=\"nofollow\">Instagram API<\/a>. It provides developers with an easy way to authenticate their app and get access to various Instagram data endpoints including images, users, likes, comments, and tags.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$api<\/span> = <span class=\"hljs-keyword\">new<\/span> Instaphp\\Instaphp([\r\n    <span class=\"hljs-string\">'client_id'<\/span> =&gt; <span class=\"hljs-string\">'your client id'<\/span>,\r\n    <span class=\"hljs-string\">'client_secret'<\/span> =&gt; <span class=\"hljs-string\">'your client secret'<\/span>,\r\n    <span class=\"hljs-string\">'redirect_uri'<\/span> =&gt; <span class=\"hljs-string\">'http:\/\/somehost.foo\/callback.php'<\/span>,\r\n    <span class=\"hljs-string\">'scope'<\/span> =&gt; <span class=\"hljs-string\">'comments+likes'<\/span>\r\n]);\r\n\r\n<span class=\"hljs-variable\">$popular<\/span> = <span class=\"hljs-variable\">$api<\/span>-&gt;Media-&gt;Popular([<span class=\"hljs-string\">'count'<\/span> =&gt; <span class=\"hljs-number\">10<\/span>]);\r\n\r\n<span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">empty<\/span>(<span class=\"hljs-variable\">$popular<\/span>-&gt;error)) {\r\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$popular<\/span>-&gt;data <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$item<\/span>) {\r\n        printf(<span class=\"hljs-string\">'&lt;img src=\"%s\"&gt;'<\/span>, <span class=\"hljs-variable\">$item<\/span>[<span class=\"hljs-string\">'images'<\/span>][<span class=\"hljs-string\">'low_resolution'<\/span>][<span class=\"hljs-string\">'url'<\/span>]);\r\n    }\r\n}<\/code><\/pre>\n<hr \/>\n<h3><a href=\"https:\/\/github.com\/shadowhand\/latitude\" target=\"_blank\" rel=\"nofollow\">Latitude<\/a><\/h3>\n<p>Zero-dependencies library for building SQL queries using chainable methods. It supports most query types and works well with MySQL, Postgres, SQL Server, and other databases. There are also built-in escaping helpers for protecting against SQL injection.<\/p>\n<pre class=\"brush:php\" data-lines=\"1 2 3 4 5 6 7 8 \"><code class=\"php hljs\"><span class=\"hljs-variable\">$select<\/span> = SelectQuery::make(\r\n        <span class=\"hljs-string\">'id'<\/span>,\r\n        <span class=\"hljs-string\">'username'<\/span>\r\n    )\r\n    -&gt;from(<span class=\"hljs-string\">'users'<\/span>);\r\n\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$select<\/span>-&gt;sql();\r\n<span class=\"hljs-comment\">\/\/ SELECT id, username FROM users<\/span><\/code><\/pre>\n<p><em>source: <a href=\"http:\/\/tutorialzine.com\/2017\/01\/20-awesome-php-libraries-for-early-2017\/\" target=\"_blank\" rel=\"nofollow\">tutorialzine<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week we have for you a collection of high-quality PHP libraries that have caught our eye in the last couple of months. We\u2019ve tried our best to include projects that are active, well documented, and will have a realistic &hellip; <a href=\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,2],"tags":[],"class_list":["post-2053","post","type-post","status-publish","format-standard","hentry","category-dev","category-tech"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>20 Awesome PHP Libraries For Early 2017 - Hellbach blog<\/title>\n<meta name=\"description\" content=\"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"20 Awesome PHP Libraries For Early 2017\" \/>\n<meta property=\"og:description\" content=\"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\" \/>\n<meta property=\"og:site_name\" content=\"Hellbach blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-31T19:52:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-01-31T19:56:58+00:00\" \/>\n<meta name=\"author\" content=\"alex\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"20 Awesome PHP Libraries For Early 2017\" \/>\n<meta name=\"twitter:description\" content=\"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.\" \/>\n<meta name=\"twitter:image\" content=\"http:\/\/cdn.tutorialzine.com\/wp-content\/uploads\/2017\/01\/20-php-libraries-early-2017.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"alex\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\"},\"author\":{\"name\":\"alex\",\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507\"},\"headline\":\"20 Awesome PHP Libraries For Early 2017\",\"datePublished\":\"2017-01-31T19:52:31+00:00\",\"dateModified\":\"2017-01-31T19:56:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\"},\"wordCount\":963,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507\"},\"articleSection\":[\"Dev\",\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\",\"url\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\",\"name\":\"20 Awesome PHP Libraries For Early 2017 - Hellbach blog\",\"isPartOf\":{\"@id\":\"https:\/\/hellbach.us\/blog\/#website\"},\"datePublished\":\"2017-01-31T19:52:31+00:00\",\"dateModified\":\"2017-01-31T19:56:58+00:00\",\"description\":\"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.\",\"breadcrumb\":{\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hellbach.us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"20 Awesome PHP Libraries For Early 2017\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hellbach.us\/blog\/#website\",\"url\":\"https:\/\/hellbach.us\/blog\/\",\"name\":\"Hellbach blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hellbach.us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507\",\"name\":\"alex\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9868a7f8fd709cd74cf51d978359a3ce66a47a17cd57185a9e1a4774d288e228?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9868a7f8fd709cd74cf51d978359a3ce66a47a17cd57185a9e1a4774d288e228?s=96&d=mm&r=g\",\"caption\":\"alex\"},\"logo\":{\"@id\":\"https:\/\/hellbach.us\/blog\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"20 Awesome PHP Libraries For Early 2017 - Hellbach blog","description":"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/","og_locale":"en_US","og_type":"article","og_title":"20 Awesome PHP Libraries For Early 2017","og_description":"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.","og_url":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/","og_site_name":"Hellbach blog","article_published_time":"2017-01-31T19:52:31+00:00","article_modified_time":"2017-01-31T19:56:58+00:00","author":"alex","twitter_card":"summary_large_image","twitter_title":"20 Awesome PHP Libraries For Early 2017","twitter_description":"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.","twitter_image":"http:\/\/cdn.tutorialzine.com\/wp-content\/uploads\/2017\/01\/20-php-libraries-early-2017.jpg","twitter_misc":{"Written by":"alex","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#article","isPartOf":{"@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/"},"author":{"name":"alex","@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507"},"headline":"20 Awesome PHP Libraries For Early 2017","datePublished":"2017-01-31T19:52:31+00:00","dateModified":"2017-01-31T19:56:58+00:00","mainEntityOfPage":{"@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/"},"wordCount":963,"commentCount":0,"publisher":{"@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507"},"articleSection":["Dev","Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/","url":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/","name":"20 Awesome PHP Libraries For Early 2017 - Hellbach blog","isPartOf":{"@id":"https:\/\/hellbach.us\/blog\/#website"},"datePublished":"2017-01-31T19:52:31+00:00","dateModified":"2017-01-31T19:56:58+00:00","description":"A curated list of some of our favorite open-source PHP libraries and frameworks from the last couple of months.","breadcrumb":{"@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hellbach.us\/blog\/tech\/dev\/20-awesome-php-libraries-early-2017\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hellbach.us\/blog\/"},{"@type":"ListItem","position":2,"name":"20 Awesome PHP Libraries For Early 2017"}]},{"@type":"WebSite","@id":"https:\/\/hellbach.us\/blog\/#website","url":"https:\/\/hellbach.us\/blog\/","name":"Hellbach blog","description":"","publisher":{"@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hellbach.us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/9bf1a63e253268c42a6e9db64611c507","name":"alex","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9868a7f8fd709cd74cf51d978359a3ce66a47a17cd57185a9e1a4774d288e228?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9868a7f8fd709cd74cf51d978359a3ce66a47a17cd57185a9e1a4774d288e228?s=96&d=mm&r=g","caption":"alex"},"logo":{"@id":"https:\/\/hellbach.us\/blog\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/posts\/2053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/comments?post=2053"}],"version-history":[{"count":0,"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/posts\/2053\/revisions"}],"wp:attachment":[{"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/media?parent=2053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/categories?post=2053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hellbach.us\/blog\/wp-json\/wp\/v2\/tags?post=2053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}