68 lines
3.1 KiB
YAML
68 lines
3.1 KiB
YAML
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' => '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 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' => '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: { }
|