<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>SymfonyCasts - PHP and Symfony Video Tutorial Screencasts</title>
    <link>https://symfonycasts.com/blog</link>
    <description>Blog feed with technical articles around PHP and screencast and tutorial updates from SymfonyCasts.com</description>
    <item>
      <title>Keeping Doctrine Entities Honest with DTOs and ObjectMapper</title>
      <link>https://symfonycasts.com/blog/honest-entities</link>
      <description>Doctrine entities in Symfony often double as form models, forcing required properties to become nullable
and allowing invalid states required by Symfony forms. Let's explore how DTOs (Data Transfer Objects) and
Symfony's ObjectMapper component can help keep our entities honest.
</description>
      <guid isPermaLink="false">/blog/honest-entities</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Meet Brontie, your AI Companion</title>
      <link>https://symfonycasts.com/blog/brontie-your-ai-companion</link>
      <description>Meet Brontie - your new SymfonyCasts companion. Part dinosaur, part AI, fully obsessed with Symfony.
Mention `@Brontie` in any tutorial, course, or blog post comment and Brontie will jump in with answers
grounded in the actual SymfonyCasts lessons.
</description>
      <guid isPermaLink="false">/blog/brontie-your-ai-companion</guid>
      <pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Symfony Deprecations Explained (Upgrade Without Breaking Things)</title>
      <link>https://symfonycasts.com/blog/deprecations-explained</link>
      <description>Symfony upgrades do not have to be stressful. Thanks to Symfony's deprecation system, you can fix future
breaking changes before upgrading. Learn why "no deprecations" is the key to a safe major upgrade - and
how Symfony gives you a clear roadmap forward.
</description>
      <guid isPermaLink="false">/blog/deprecations-explained</guid>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Composer 2.9 Automatic Security Blocking: Fireside Chat</title>
      <link>https://symfonycasts.com/blog/composer-security-advisory</link>
      <description>Composer 2.9 turns security the next level. Instead of politely warning about vulnerable dependencies,
it now blocks insecure installs and updates by default, forcing issues to surface early and keeping
your PHP projects safer without extra tools.
</description>
      <guid isPermaLink="false">/blog/composer-security-advisory</guid>
      <pubDate>Mon, 22 Dec 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Package Spotlight: `zenstruck/class-metadata`</title>
      <link>https://symfonycasts.com/blog/package-spotlight-class-metadata</link>
      <description>Add extra context to your PHP classes with `zenstruck/class-metadata`. This
lightweight package lets you define short, readable identifiers for your
classes - known as aliases - and attach custom metadata directly to them.
</description>
      <guid isPermaLink="false">/blog/package-spotlight-class-metadata</guid>
      <pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Remembering Ryan Weaver</title>
      <link>https://symfonycasts.com/blog/remembering-ryan-weaver</link>
      <description>With deep sadness, we share that Ryan Weaver — co-founder of SymfonyCasts, father,
husband, beloved teacher, and friend — has passed away after a long and courageous
journey with brain cancer.
</description>
      <guid isPermaLink="false">/blog/remembering-ryan-weaver</guid>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Installing PHP and Symfony CLI Locally</title>
      <link>https://symfonycasts.com/blog/install-php-locally</link>
      <description>The Symfony CLI makes local development a breeze - but it works best when PHP
is installed directly on your machine. Let's walk through setting up PHP (plus
common database extensions) and the Symfony CLI on macOS, Linux, or Windows
so you're ready to start building Symfony apps.
</description>
      <guid isPermaLink="false">/blog/install-php-locally</guid>
      <pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Ditch mailto Links: Pre-Fill &amp; even Attach Files with Symfony Mailer (.eml Magic!)</title>
      <link>https://symfonycasts.com/blog/advanced-mailto-with-symfony-mailer</link>
      <description>The `mailto:` link is a simple way to open an email client with a pre-filled
email. But what if you want this email to have a pre-filled attachment?
Let's dive into how to do this with Symfony Mailer.
</description>
      <guid isPermaLink="false">/blog/advanced-mailto-with-symfony-mailer</guid>
      <pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Mailtrap Tutorial (Free) = Mailer + Webhook + Contributing back to Symfony</title>
      <link>https://symfonycasts.com/blog/mailtrap</link>
      <description>The free Mailtrap tutorial is here! It's all about the Mailer &amp; Webhook
components with the joy of previewing emails in a sandbox. As a bonus,
this tutorial triggered several contributions back to Symfony!
</description>
      <guid isPermaLink="false">/blog/mailtrap</guid>
      <pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>SymfonyCasts November Open Source Roundup!</title>
      <link>https://symfonycasts.com/blog/2024-november-oss-roundup</link>
      <description>This month we've got 6 SymfonyCasts open source releases, let's take a quick
look at what's new and give a huge thanks to all the contributors who helped make
these releases happen!
</description>
      <guid isPermaLink="false">/blog/2024-november-oss-roundup</guid>
      <pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>
