{"id":28970,"date":"2018-11-12T16:53:09","date_gmt":"2018-11-12T14:53:09","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=28970"},"modified":"2018-11-12T16:53:09","modified_gmt":"2018-11-12T14:53:09","slug":"spatie-data-transfer-object-data-transfer-objects-with-batteries-included","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/11\/12\/spatie-data-transfer-object-data-transfer-objects-with-batteries-included\/","title":{"rendered":"spatie\/data-transfer-object &#8211; Data transfer objects with batteries included"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/github.com\/spatie\/data-transfer-object\">spatie\/data-transfer-object<\/a> library provides very easy to use data-transfer objects for PHP.\u00a0 If you code is relying a lot on arrays, you&#8217;ll appreciate this different approach.\u00a0 And the more complex your arrays are, the more benefit you&#8217;ll get out of it.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>spatie\/data-transfer-object library provides very easy to use data-transfer objects for PHP.\u00a0 If you code is relying a lot on arrays, you&#8217;ll appreciate this different approach.\u00a0 And the more complex your arrays are, the more benefit you&#8217;ll get out of it.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"spatie\/data-transfer-object - Data transfer objects with batteries included #WebDev #PHP","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[38,1330],"keyring_services":[],"class_list":["post-28970","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-php","tag-web-development"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":29077,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/12\/10\/spatie-period-complex-period-comparisons-in-php\/","url_meta":{"origin":28970,"position":0},"title":"spatie\/period &#8211; complex period comparisons in PHP","author":"Leonid Mamchenkov","date":"December 10, 2018","format":false,"excerpt":"spatie\/period is a PHP library that provides complex period comparisons.\u00a0 It implements a variety of methods for calculating gaps, boundaries, overlaps, and other operations on multiple dates.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29035,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/11\/27\/avoid-complex-arrays-in-php\/","url_meta":{"origin":28970,"position":1},"title":"Avoid complex arrays in PHP","author":"Leonid Mamchenkov","date":"November 27, 2018","format":false,"excerpt":"Now that PHP 7+ sorted out a whole bunch of problems with type-hinting of parameters, return values, variables and properties, we turn our attention to somewhat deeper issues. Array is a native citizen in PHP.\u00a0 Arrays are very convenient and are widely used.\u00a0 However, if you stop and think about\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28215,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/11\/13\/easily-optimize-images-using-php\/","url_meta":{"origin":28970,"position":2},"title":"Easily optimize images using PHP","author":"Leonid Mamchenkov","date":"November 13, 2017","format":false,"excerpt":"Via this blog post I came across this PHP image optimization library, which somewhat reminds me of this blog post from a couple of years ago.\u00a0 As good as ImageMagick is, it takes time and effort to find all the right options.\u00a0 With Spatie Image Optimizer you have an almost\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28552,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/07\/working-with-php-arrays-in-the-right-way\/","url_meta":{"origin":28970,"position":3},"title":"Working With PHP Arrays in the Right Way","author":"Leonid Mamchenkov","date":"May 7, 2018","format":false,"excerpt":"\"Working With PHP Arrays in the Right Way\" is a collection of tips and tricks on the array functions in PHP.\u00a0 PHP is weird, to say the least, when it comes to arrays, compared to many other programming languages, so articles like that are useful for pointers to better ways\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27463,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/27\/creating-strictly-typed-arrays-collections-php\/","url_meta":{"origin":28970,"position":4},"title":"Creating Strictly Typed Arrays and Collections in PHP","author":"Leonid Mamchenkov","date":"March 27, 2017","format":false,"excerpt":"This SitePoint PHP blog post\u00a0(read at Planet PHP if the site is unavailable) brings to light a very useful feature available since PHP 5.6 - ellipses in functional arguments, which allows to define a variable number of arguments to a function. I've seen the mentions of ellipses a few times\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27612,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/23\/php-moving-from-array-to-class\/","url_meta":{"origin":28970,"position":5},"title":"PHP : Moving from array to class","author":"Leonid Mamchenkov","date":"May 23, 2017","format":false,"excerpt":"\"Moving from array to class\" is yet another thought-provoking take on the difference between arrays and classes in the modern versions of PHP. \u00a0The benefits of moving from arrays to classes seem to be not only in the code readability and maintainability, but quite clearly in performance and resource utilization\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=28970"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28970\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=28970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=28970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=28970"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=28970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}