{"id":27320,"date":"2017-02-10T02:13:30","date_gmt":"2017-02-10T00:13:30","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=27320"},"modified":"2017-02-10T02:19:18","modified_gmt":"2017-02-10T00:19:18","slug":"php-assertions","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/","title":{"rendered":"PHP assertions"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>When I hear the word &#8220;assertion&#8221;, the first thing that comes to my mind is <a href=\"https:\/\/phpunit.de\/manual\/current\/en\/appendixes.assertions.html\">PHPUnit assertions<\/a>. \u00a0Sure, I write assertions in my unit tests. \u00a0But is that the only application? \u00a0Today I decided to figure it out, or, at least, learn more about the subject.<\/p>\n<p>It turns out that PHP has <a href=\"http:\/\/php.net\/manual\/en\/function.assert.php\">assert()<\/a> and <a href=\"http:\/\/php.net\/manual\/en\/function.assert-options.php\">assert_options()<\/a> functions. \u00a0And those were there since the ancient times of PHP 4. \u00a0Sounds cool, but how useful are these? \u00a0Well, not that much:<\/p>\n<blockquote>\n<p class=\"para\">Assertions should be used as a debugging feature only. You may use them for sanity-checks that test for conditions that should always be <strong><code>TRUE<\/code><\/strong> and that indicate some programming errors if not or to check for the presence of certain features like extension functions or certain system limits and features.<\/p>\n<p class=\"para\">Assertions should not be used for normal runtime operations like input parameter checks. As a rule of thumb your code should always be able to work correctly if assertion checking is not activated.<\/p>\n<\/blockquote>\n<p class=\"para\">This <a href=\"http:\/\/stackoverflow.com\/questions\/4516419\/should-i-be-using-assert-in-my-php-code\">StackOverflow discussion<\/a> expands a bit on the subject and concludes that assertions are just a developer tool used for troubleshooting and such. Bummer!<\/p>\n<p class=\"para\">But I&#8217;m not that easily stopped. \u00a0Next stop &#8211; search for tools and libraries on <a href=\"https:\/\/github.com\/search?q=topic%3Aphp&amp;type=Repositories\">GitHub<\/a> and <a href=\"https:\/\/packagist.org\/\">Packagist<\/a>. \u00a0There&#8217;s more luck here! \u00a0A whole lot of different libraries exist that help with asserting facts and matching values to patterns. \u00a0I&#8217;ve checked a few of them and here&#8217;s the <strong>Top 3 List<\/strong>\u00a0that I&#8217;m considering for use in my code:<\/p>\n<ul>\n<li class=\"para\"><a href=\"https:\/\/github.com\/beberlei\/assert\">beberlei\/assert<\/a> &#8211; simple to use library, with a respectable number of implemented assertions. \u00a0It supports chained methods, lazy assertions, and is\u00a0easy to extend. \u00a0(See <a href=\"http:\/\/www.whitewashing.de\/2014\/01\/26\/assert_v2_0__fluent_api_and_lazy_assertions.html\">this blog post<\/a>, announcing version 2 a few years back.) Also, the fact that <a href=\"https:\/\/packagist.org\/packages\/beberlei\/assert\/dependents\">almost 300 projects<\/a> depend on it, makes it an attractive choice.<\/li>\n<li class=\"para\"><a href=\"https:\/\/github.com\/nilportugues\/php-assert\">nilportugues\/php-assert<\/a> &#8211; also an easy\u00a0to use library, which offers even more assertions, grouped into a number of categories (generic, string, integer, float, array, date and time, object, and file upload). \u00a0It&#8217;s not anywhere near as popular as the previous option, but that is probably\u00a0just a question of time.<\/li>\n<li class=\"para\"><a href=\"https:\/\/github.com\/peridot-php\/leo\">peridot-php\/leo<\/a> &#8211; a much more advanced assertion and matching library than the previous two options. \u00a0In fact, so much more advanced, that it has a dedicated <a href=\"http:\/\/peridot-php.github.io\/leo\/\">documentation website<\/a>. \u00a0This is understandable, as this library is a part of the <a href=\"http:\/\/peridot-php.github.io\/\">Peridot<\/a> BDD testing framework. \u00a0It is easy to extend too, but I&#8217;m not sure yet that I need that level of complexity in my projects.<\/li>\n<\/ul>\n<p>I found a <a href=\"https:\/\/libraries.io\/search?keywords=assert&amp;languages=PHP\">few more alternatives<\/a>, but they looked like side projects or small toolboxes for specific needs. \u00a0None of those impressed me enough to be linked here.<\/p>\n<p>It&#8217;s too late at night to make a decision right now on which project I like the most. \u00a0But I will definitely play more with the ones above. \u00a0If you have any experience with those or with any other assertion\/matching library, I&#8217;m interested to hear.<\/p>\n<p>&nbsp;<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>When I hear the word &#8220;assertion&#8221;, the first thing that comes to my mind is PHPUnit assertions. \u00a0Sure, I write assertions in my unit tests. \u00a0But is that the only application? \u00a0Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options() &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">PHP assertions<\/span><\/a><\/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_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"PHP assertions #PHP #WebDev","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},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[38,1330],"keyring_services":[],"class_list":["post-27320","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-php","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"When I hear the word &quot;assertion&quot;, the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"PHP assertions - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"When I hear the word &quot;assertion&quot;, the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2017-02-10T00:13:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2017-02-10T00:19:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"PHP assertions - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"When I hear the word &quot;assertion&quot;, the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#blogposting\",\"name\":\"PHP assertions - Leonid Mamchenkov\",\"headline\":\"PHP assertions\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2017-02-10T02:13:30+02:00\",\"dateModified\":\"2017-02-10T02:19:18+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, PHP, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#listItem\",\"name\":\"PHP assertions\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#listItem\",\"position\":4,\"name\":\"PHP assertions\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/\",\"name\":\"PHP assertions - Leonid Mamchenkov\",\"description\":\"When I hear the word \\\"assertion\\\", the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2017\\\/02\\\/10\\\/php-assertions\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2017-02-10T02:13:30+02:00\",\"dateModified\":\"2017-02-10T02:19:18+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"PHP assertions - Leonid Mamchenkov","description":"When I hear the word \"assertion\", the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#blogposting","name":"PHP assertions - Leonid Mamchenkov","headline":"PHP assertions","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2017-02-10T02:13:30+02:00","dateModified":"2017-02-10T02:19:18+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#webpage"},"articleSection":"All, Programming, Technology, Web work, PHP, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#listItem","name":"PHP assertions"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#listItem","position":4,"name":"PHP assertions","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/","name":"PHP assertions - Leonid Mamchenkov","description":"When I hear the word \"assertion\", the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2017-02-10T02:13:30+02:00","dateModified":"2017-02-10T02:19:18+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"PHP assertions - Leonid Mamchenkov","og:description":"When I hear the word &quot;assertion&quot;, the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()","og:url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2017-02-10T00:13:30+00:00","article:modified_time":"2017-02-10T00:19:18+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"PHP assertions - Leonid Mamchenkov","twitter:description":"When I hear the word &quot;assertion&quot;, the first thing that comes to my mind is PHPUnit assertions. Sure, I write assertions in my unit tests. But is that the only application? Today I decided to figure it out, or, at least, learn more about the subject. It turns out that PHP has assert() and assert_options()","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"27320","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-20 04:25:33","updated":"2026-01-15 12:42:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPHP assertions\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"PHP assertions","link":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":28845,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/10\/09\/php-assertions-and-assertion-libraries\/","url_meta":{"origin":27320,"position":0},"title":"PHP  assertions and assertion libraries","author":"Leonid Mamchenkov","date":"October 9, 2018","format":false,"excerpt":"I've blogged about PHP assertions and assertion libraries a while back.\u00a0 I haven't started using the assertions anywhere outside of unit tests yet, but with more and more bloat added to the code to check for types and particular values, I keep coming back to the idea. Today I came\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":27493,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/04\/09\/phpunit-snapshot-assertions-a-way-to-test-without-writing-actual-test-cases\/","url_meta":{"origin":27320,"position":1},"title":"PHPUnit Snapshot Assertions &#8211; a way to test without writing actual test cases","author":"Leonid Mamchenkov","date":"April 9, 2017","format":false,"excerpt":"phpunit-snapshot-assertions - is an interesting addition to the PHPUnit assertions which allows testing against previously created snapshots. \u00a0This is particularly useful for testing the outputs of API end-points, format conversion functions, and the like. \u00a0Instead of testing the actual functionality, these assertions allow to compare the output of the current\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":28418,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/02\/27\/github-quickly-review-changed-functions-in-your-php-pull-requests\/","url_meta":{"origin":27320,"position":2},"title":"GitHub : Quickly review changed functions in your PHP pull requests","author":"Leonid Mamchenkov","date":"February 27, 2018","format":false,"excerpt":"GitHub is one of the greatest tools for developers ever.\u00a0 And it keeps getting better.\u00a0 Most of the new features that GitHub introduces are usually generic and apply to all developers universally.\u00a0 Today, however, they have a special present for the PHP developers -\u00a0Quickly review changed functions in your PHP\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/02\/github-php-500x221.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28623,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/11\/top-100-php-functions\/","url_meta":{"origin":27320,"position":3},"title":"Top 100 PHP functions","author":"Leonid Mamchenkov","date":"June 11, 2018","format":false,"excerpt":"\"Top 100 PHP functions\" is a list of the top 100 most frequently used PHP functions, from the analysis of the 1,900 open source projects.\u00a0 \u00a0If you are still learning PHP, this list is a good overview of what you'll see the most in real life projects.","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":27320,"position":4},"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":26718,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/10\/10\/php-array_merge_recursive-vs-array_replace_recursive\/","url_meta":{"origin":27320,"position":5},"title":"PHP: array_merge_recursive() vs. array_replace_recursive()","author":"Leonid Mamchenkov","date":"October 10, 2016","format":false,"excerpt":"Here is a nice blog post describing the important differences between array_merge_recursive() and array_replace_recursive() functions in PHP. \u00a0These are often overlooked when testing new developments with simpler data structures. \u00a0Troubleshooting for it later is not too obvious.","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\/27320","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=27320"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/27320\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=27320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=27320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=27320"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=27320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}