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

69 lines
3.1 KiB
YAML
Raw Normal View History

2025-07-10 00:14:12 +01:00
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>
2025-07-16 12:00:00 +01:00
<p>This seemed straightforward&nbsp;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>
2025-07-10 00:14:12 +01:00
<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: { }