{ "uuid": [ { "value": "2f503fac-0d18-436b-a5d1-64263c5fc616" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:14+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Assertions aren't just for tests" } ], "created": [ { "value": "2024-05-08T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:14+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2024\/05\/08\/assertions-arent-just-for-tests", "langcode": "en" } ], "body": [ { "value": "\n

If you've written or seen automated tests in PHP, you'll have seen lines like this:<\/p>\n\n

self::assertTrue(FALSE);\n<\/code><\/pre>\n\n

But, did you know assertions can be used outside of tests.<\/p>\n\n

PHP has an assert()<\/code> function that can be used anywhere.<\/p>\n\n

For example, if I had this code:<\/p>\n\n

$node = Node::load(1);\n\nassert($node instanceof NodeInterface);\nassert($node->bundle() === 'page');\n<\/code><\/pre>\n\n

I know $node<\/code> is a node with the correct bundle type and I can continue.<\/p>\n\n

I've made my assumptions explicit.<\/p>\n\n

If $node<\/code> is not the correct type or returns an unexpected bundle, the assertion will fail and an Exception will be thrown.<\/p>\n\n

I think this is better than assuming or hoping the values are as you expect, and it also makes the intent of the code much easier to see and understand.<\/p>\n\n

If you haven't tried assert()<\/code> before, give it a try.<\/p>\n\n ", "format": "full_html", "processed": "\n

If you've written or seen automated tests in PHP, you'll have seen lines like this:<\/p>\n\n

self::assertTrue(FALSE);\n<\/code><\/pre>\n\n

But, did you know assertions can be used outside of tests.<\/p>\n\n

PHP has an assert()<\/code> function that can be used anywhere.<\/p>\n\n

For example, if I had this code:<\/p>\n\n

$node = Node::load(1);\n\nassert($node instanceof NodeInterface);\nassert($node->bundle() === 'page');\n<\/code><\/pre>\n\n

I know $node<\/code> is a node with the correct bundle type and I can continue.<\/p>\n\n

I've made my assumptions explicit.<\/p>\n\n

If $node<\/code> is not the correct type or returns an unexpected bundle, the assertion will fail and an Exception will be thrown.<\/p>\n\n

I think this is better than assuming or hoping the values are as you expect, and it also makes the intent of the code much easier to see and understand.<\/p>\n\n

If you haven't tried assert()<\/code> before, give it a try.<\/p>\n\n ", "summary": null } ] }