oliverdavies.uk/content/node.ebf479a8-f93c-4972-ae90-8b59a0ca8081.yml

68 lines
3.1 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

uuid:
- value: ebf479a8-f93c-4972-ae90-8b59a0ca8081
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:06+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: 'Writing custom PHPStan rules for Drupal projects'
created:
- value: '2024-09-22T00:00:00+00:00'
changed:
- value: '2025-05-11T09:00:06+00:00'
promote:
- value: false
sticky:
- value: false
default_langcode:
- value: true
revision_translation_affected:
- value: true
path:
- alias: /daily/2024/09/22/writing-custom-phpstan-rules-for-drupal-projects
langcode: en
body:
- value: |
<p>Today, I watched a video recording of a session by Ondřej Mirtes - the creator of PHPStan - on writing custom rules for PHPStan.</p>
<p>After explaining how to write them, he showed some examples of custom rules - one of which was ensuring a <code>Person</code> class couldn't be created outside of a <code>PersonRepository</code> class.</p>
<p>This seemed straightforward so I thought about how I could do something similar within my <a href="/atdc">Drupal automated testing email course</a> to check my Drupal code.</p>
<p>Similar to Ondřej's example, I wondered if I could enforce that no post nodes should be created outside of the <code>PostBuilder</code> class by searching for any code like <code>Node::create(['type' =&gt; 'post'])</code>.</p>
<p>I was able to get a version working quickly and have <a href="https://gist.github.com/opdavies/a2f9d92cf3b67db6a64b9fca4e4e6697">posted it as a gist</a>.</p>
<p>I'm sure some improvements can be made, but it was a successful experiment and something I can see me using more in the future.</p>
format: full_html
processed: |
<p>Today, I watched a video recording of a session by Ondřej Mirtes - the creator of PHPStan - on writing custom rules for PHPStan.</p>
<p>After explaining how to write them, he showed some examples of custom rules - one of which was ensuring a <code>Person</code> class couldn't be created outside of a <code>PersonRepository</code> class.</p>
<p>This seemed straightforward&nbsp;so I thought about how I could do something similar within my <a href="http://default/atdc">Drupal automated testing email course</a> to check my Drupal code.</p>
<p>Similar to Ondřej's example, I wondered if I could enforce that no post nodes should be created outside of the <code>PostBuilder</code> class by searching&nbsp;for any code like <code>Node::create(['type' =&gt; 'post'])</code>.</p>
<p>I was able to get a version working quickly and have <a href="https://gist.github.com/opdavies/a2f9d92cf3b67db6a64b9fca4e4e6697">posted it as a gist</a>.</p>
<p>I'm sure some improvements can be made, but it was a successful experiment and something I can see me using more in the future.</p>
summary: null
field_daily_email_cta: { }