<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>This Programming Thing</title>
    <description>Blogging about PHP, MySQL, Zend Framework, MySQL, Server Administration and Programming in general</description>
    <link>https://www.thisprogrammingthing.com/</link>
    <atom:link href="https://www.thisprogrammingthing.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 04 Dec 2023 18:49:41 -0500</pubDate>
    <lastBuildDate>Mon, 04 Dec 2023 18:49:41 -0500</lastBuildDate>
    <generator>Jekyll v4.2.2</generator>
    
      <item>
        <title>Every 2024 Date in Y-m-d Format</title>
        <description>
            &lt;p&gt;I had a need to have a list of every date in 2024 so I could dump it into a text file.  I could have done it in Excel but I figured I might as well spend 10 times the amount of time writing it in PHP.&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2023/every-2023-date-in-y-m-d-format/">Read More</a>
            
        </description>
        <pubDate>Mon, 04 Dec 2023 01:00:00 -0500</pubDate>
        <link>https://www.thisprogrammingthing.com/2023/every-2023-date-in-y-m-d-format/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2023/every-2023-date-in-y-m-d-format/</guid>
        
        
        <category>PHP</category>
        
      </item>
    
      <item>
        <title>Getting Started with Test-Driven Development: Longhorn PHP 2023</title>
        <description>
            &lt;p&gt;I gave a talk about TDD at Longhorn PHP 2023.  This post contains the slides and any associated resources I wanted to make available to everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate my talk on joind.in: &lt;a href=&quot;https://joind.in/talk/95604&quot;&gt;https://joind.in/talk/95604&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2023/getting-started-with-tdd-longhorn-2023/">Read More</a>
            
        </description>
        <pubDate>Sat, 04 Nov 2023 02:00:00 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2023/getting-started-with-tdd-longhorn-2023/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2023/getting-started-with-tdd-longhorn-2023/</guid>
        
        
        <category>Conference Talks</category>
        
      </item>
    
      <item>
        <title>Laravel Collections: collect() Function</title>
        <description>
            &lt;div class=&quot;text-center&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/EujrWPvMyqY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;


            
        </description>
        <pubDate>Fri, 22 Sep 2023 05:00:00 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2023/laravel-collections-00001-collect-function/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2023/laravel-collections-00001-collect-function/</guid>
        
        
        <category>Laravel</category>
        
      </item>
    
      <item>
        <title>Reducing Bugs With Static Code Analysis: PHP[Tek] 2023</title>
        <description>
            &lt;p&gt;I gave a talk about static code analysis at PHP[Tek] 2023.  This is the slides and any associated resources I wanted to make available to everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate my talk on joind.in: &lt;a href=&quot;https://joind.in/talk/23cc8&quot;&gt;https://joind.in/talk/23cc8&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/key/pkA7pbjhnf5pMg?hostedIn=slideshare&amp;amp;page=upload&quot; width=&quot;476&quot; height=&quot;400&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/c/phparch&quot;&gt;PHP[Architect YouTube]&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/warren5236/scottsvalueobjects&quot;&gt;Scott’s Value Objects&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;This has most of the tools we discussed configured&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;GitHub Actions Video - Future Video Check Back Later&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=gMLtcij8OI4&quot;&gt;Pre-commit Scripts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Lists of Static Code Analysis Tools
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/exakat/php-static-analysis-tools&quot;&gt;https://github.com/exakat/php-static-analysis-tools&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://analysis-tools.dev/tag/php&quot;&gt;https://analysis-tools.dev/tag/php&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/php-parallel-lint/PHP-Parallel-Lint&quot;&gt;php-parallel-lint&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/squizlabs/PHP_CodeSniffer&quot;&gt;PHP_CodeSniffer&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3Ee1MZLMgAo&quot;&gt;Video on usage&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=TZvvEPuqXLU&quot;&gt;Video on creating custom standard&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=2mEE7GKTTa8&quot;&gt;Video on PSR Coding Standards&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/slevomat/coding-standard&quot;&gt;Slevomat Coding Standard library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/phpstan/phpstan&quot;&gt;PHPStan&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/rectorphp/rector&quot;&gt;Rector&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;social&quot;&gt;Social&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://phpc.social/@scottkeckwarren&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/in/scott-keck-warren-91689810/&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tiktok.com/@scottkeckwarren&quot;&gt;TikTok&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.twitter.com/scottkeckwarren&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            
        </description>
        <pubDate>Wed, 17 May 2023 05:00:00 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2023/reducing-bugs-with-static-code-analysis-php-tek-2023/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2023/reducing-bugs-with-static-code-analysis-php-tek-2023/</guid>
        
        
        <category>Conference Talks</category>
        
      </item>
    
      <item>
        <title>Getting Started with Test-Driven Development: PHP[Tek] 2023</title>
        <description>
            &lt;p&gt;I gave a talk about static code analysis at PHP[Tek] 2023.  This is the slides and any associated resources I wanted to make available to everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate my talk on joind.in: &lt;a href=&quot;https://joind.in/talk/ec8ad&quot;&gt;https://joind.in/talk/ec8ad&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/key/KyAWJtVzvQ886r?hostedIn=slideshare&amp;amp;page=upload&quot; width=&quot;476&quot; height=&quot;400&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/c/phparch&quot;&gt;PHP[Architect] YouTube Channel&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=_C-AG_54x8U&quot;&gt;Automated Testing Using PHPUnit&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pestphp.com/&quot;&gt;Pest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=eaQVh2C9NqE&quot;&gt;Value Objects Video&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=PFywmvzecno&quot;&gt;Determining Your Code Coverage With PHPUnit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;social&quot;&gt;Social&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://phpc.social/@scottkeckwarren&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/in/scott-keck-warren-91689810/&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tiktok.com/@scottkeckwarren&quot;&gt;TikTok&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.twitter.com/scottkeckwarren&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            
        </description>
        <pubDate>Tue, 16 May 2023 02:00:00 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2023/getting-started-with-tdd-php-tek-2023-copy/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2023/getting-started-with-tdd-php-tek-2023-copy/</guid>
        
        
        <category>Conference Talks</category>
        
      </item>
    
      <item>
        <title>Working With Cookies in PHP</title>
        <description>
            &lt;p&gt;A core functionality of any modern web application is keeping track of our users between web requests.  We could add a unique identifier to every URL but this makes our URLs hard to generate, hard to read, and hard to share.  Thankfully, every modern browser supports cookies to keep track of our users between requests.&lt;/p&gt;

&lt;p&gt;In this article, we’ll discuss how to use cookies in our PHP applications.&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2022/Working-With-Cookies-in-PHP/">Read More</a>
            
        </description>
        <pubDate>Tue, 12 Jul 2022 19:00:10 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2022/Working-With-Cookies-in-PHP/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2022/Working-With-Cookies-in-PHP/</guid>
        
        
        <category>PHP</category>
        
        <category>Basics</category>
        
      </item>
    
      <item>
        <title>Using Precommit Hooks For Static Code Analysis</title>
        <description>
            &lt;p&gt;In our last several articles, we’ve discussed how to use the PHP_CodeSniffer library to verify our code is following an agreed-upon coding standard and how to run the phpcs extension in VSCode to see where we’re not following the code as we type.  We’ll eventually discuss how to move these checks to a Continuous Integration server but wouldn’t it be great if we could make sure our code was passing these checks before we push them anywhere?&lt;/p&gt;

&lt;p&gt;In this article we’ll discuss how to use Git’s pre-commit hooks to run our static code analysis tools on just the set of files we’ve modified.&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2022/Using-Precommit-Hooks-For-Static-Code-Analysis/">Read More</a>
            
        </description>
        <pubDate>Tue, 28 Jun 2022 19:00:10 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2022/Using-Precommit-Hooks-For-Static-Code-Analysis/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2022/Using-Precommit-Hooks-For-Static-Code-Analysis/</guid>
        
        
        <category>Culture</category>
        
      </item>
    
      <item>
        <title>Fixing Long Functions With The Extract Function Refactoring</title>
        <description>
            &lt;p&gt;One of our core tenets of development is that code is read more than it’s written.  To that end, we must make our code as easy to read and understand as possible.  No one writes perfect code on the first try so it’s important that we continually refine our code so it’s easy for the next developer to read even if we’re the next developer.&lt;/p&gt;

&lt;p&gt;In this article, we’re going to discuss what the extract function refactor is, what code smells are an indication to use it, and then work through an example in PHP.&lt;/p&gt;

&lt;h2 id=&quot;code-smell&quot;&gt;Code Smell&lt;/h2&gt;
&lt;p&gt;We should use the extract function refactoring when we have code that’s duplicated in multiple places or when we can isolate a portion of a larger method to make multiple methods.&lt;/p&gt;

&lt;p&gt;Duplicate code is less than ideal in our codebase because this duplication causes us to maintain the same logic twice and it’s easy for us to not update all the duplicate code which can cause bugs to enter our codebase.&lt;/p&gt;

&lt;p&gt;“Large methods” can be hard to define.  Some people have a hard limit for their teams while others say it needs to fit on a single screen.  The logic of what can fit inside a single screen is a fun concept now that some people use their monitors in a vertical orientation.&lt;/p&gt;

&lt;p&gt;A good rule to use is that a function should be as small as possible while still being easy to read.  Small functions are also easier to test and debug as they generally only have a few paths.&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-extract-function-code-refactoring&quot;&gt;What Is the Extract Function Code Refactoring?&lt;/h2&gt;
&lt;p&gt;In this technique, we take a section of code and make it a new function.&lt;/p&gt;

&lt;p&gt;To perform this refactoring we’ll:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Copy the section of code we’re extracting and then paste it into a new method&lt;/li&gt;
  &lt;li&gt;Look for any local variables and add them as parameters to the method&lt;/li&gt;
  &lt;li&gt;Replace the extracted code with a call to the newly created method&lt;/li&gt;
  &lt;li&gt;Run our tests and make sure they all pass&lt;/li&gt;
  &lt;li&gt;Look for places where we can use the newly extracted method&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;example&quot;&gt;Example&lt;/h2&gt;
&lt;p&gt;Let’s work through an example.  Our codebase contains the following function.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public function rebuildEstimatesBasedOnIncompleteTasks(): void
{
    // get the incomplete tasks assigned to this project
    $tasks = Task::where('project_id', $this-&amp;gt;id)
        -&amp;gt;whereNull('end_date')
        -&amp;gt;get();

    $total = 0;
    foreach ($tasks as $task) {
        if ($task-&amp;gt;time_estimate &amp;gt; 1) {
            $total += $task-&amp;gt;time_estimate;
        }

        if ($task-&amp;gt;time_estimate === null) {
            $total += 2;
        }
    }

    $this-&amp;gt;estimated_date = now()-&amp;gt;modify(&quot;+{$total} days&quot;);
    $this-&amp;gt;save();
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Because we used an intention revealing name of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rebuildEstimatesBasedOnIncompleteTasks&lt;/code&gt; we can tell that we’re going to be rebuilding estimates based on our incomplete tasks but it’s hard to quickly parse exactly which part of the function does what.&lt;/p&gt;

&lt;p&gt;Let’s extract a new function that calculates the total of a set of tasks.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;Copy the section of code we’re extracting and then paste it into a new method&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public function rebuildEstimatesBasedOnIncompleteTasks(): void
{
    // get the incomplete tasks assigned to this project
    $tasks = Task::where('project_id', $this-&amp;gt;id)
        -&amp;gt;whereNull('end_date')
        -&amp;gt;get();

    $total = 0;
    foreach ($tasks as $task) {
        if ($task-&amp;gt;time_estimate &amp;gt; 1) {
            $total += $task-&amp;gt;time_estimate;
        }

        if ($task-&amp;gt;time_estimate === null) {
            $total += 2;
        }
    }

    $this-&amp;gt;estimated_date = now()-&amp;gt;modify(&quot;+{$total} days&quot;);
    $this-&amp;gt;save();
}

public function calculateEstimatedHoursForTasks(): int
{
    $total = 0;
    foreach ($tasks as $task) {
        if ($task-&amp;gt;time_estimate &amp;gt; 1) {
            $total += $task-&amp;gt;time_estimate;
        }

        if ($task-&amp;gt;time_estimate === null) {
            $total += 2;
        }
    }

    return $total;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;Look for any local variables and add them as parameters to the method&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public function calculateEstimatedHoursForTasks(Collection $tasks): int
{
    $total = 0;
    foreach ($tasks as $task) {
        if ($task-&amp;gt;time_estimate &amp;gt; 1) {
            $total += $task-&amp;gt;time_estimate;
        }

        if ($task-&amp;gt;time_estimate === null) {
            $total += 2;
        }
    }

    return $total;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;Replace the extracted code with a call to the newly created method&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public function rebuildEstimatesBasedOnIncompleteTasks(): void
{
    // get the incomplete tasks assigned to this project
    $tasks = Task::where('project_id', $this-&amp;gt;id)
        -&amp;gt;whereNull('end_date')
        -&amp;gt;get();

    $total = $this-&amp;gt;calculateEstimatedHoursForTasks();

    $this-&amp;gt;estimated_date = now()-&amp;gt;modify(&quot;+{$total} days&quot;);
    $this-&amp;gt;save();
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;Run our tests and make sure they all pass&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’ll run our total test suite.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;Look for places where we can use the newly extracted method&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this case, we don’t have anywhere that we can reuse this new method but it could come in handy in the future.&lt;/p&gt;

&lt;h2 id=&quot;what-you-need-to-know&quot;&gt;What You Need To Know&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Extract Function Refactor allows us to extra code from one function into a new one&lt;/li&gt;
  &lt;li&gt;This reduces duplication and improves readability&lt;/li&gt;
&lt;/ul&gt;

            
        </description>
        <pubDate>Tue, 14 Jun 2022 19:00:10 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2022/Fixing-Long-Functions-With-The-Extract-Function-Refactoring/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2022/Fixing-Long-Functions-With-The-Extract-Function-Refactoring/</guid>
        
        
        <category>Culture</category>
        
      </item>
    
      <item>
        <title>Creating Your Own Standard for PHP_CodeSniffer</title>
        <description>
            &lt;p&gt;In “&lt;a href=&quot;https://www.thisprogrammingthing.com/2022/the-psr-coding-standards/&quot;&gt;The PSR Coding Standards&lt;/a&gt;” we discussed how we have three options when picking a coding standard.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;We can create a coding standard from scratch.&lt;/li&gt;
  &lt;li&gt;We can borrow a coding standard that already exists and use it as is.&lt;/li&gt;
  &lt;li&gt;We can borrow a coding standard that exists and then add or remove rules that don’t fit our team’s environment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this article, we’re going to discuss how we can implement the third option by creating our own standard for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phpcs&lt;/code&gt; using the PSR12 standard as a starting point.  If you missed either our article about “&lt;a href=&quot;https://www.thisprogrammingthing.com/2022/the-psr-coding-standards/&quot;&gt;The PSR Coding Standards&lt;/a&gt;” or “&lt;a href=&quot;https://www.thisprogrammingthing.com/2022/PHP_CodeSniffer/&quot;&gt;PHP_CodeSniffer&lt;/a&gt;” you might want to read them first.&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2022/Creating-Your-Own-Standard-with-PHPCS/">Read More</a>
            
        </description>
        <pubDate>Tue, 24 May 2022 19:00:10 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2022/Creating-Your-Own-Standard-with-PHPCS/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2022/Creating-Your-Own-Standard-with-PHPCS/</guid>
        
        
        <category>Culture</category>
        
      </item>
    
      <item>
        <title>What is Code Refactoring?</title>
        <description>
            &lt;p&gt;One of our core tenets of development is that code is read more than it’s written.  To that end, we must make our code as easy to read and understand as possible.  No one writes perfect code on the first try so it’s important that we continually refine our code so it’s easy for the next developer to read even if we’re the next developer.&lt;/p&gt;

&lt;p&gt;In this article, we’ll discuss what refactoring is, how to make it dead simple to do, and discuss the next set of articles in this series.&lt;/p&gt;


            
                <a href="https://www.thisprogrammingthing.com/2022/what-is-code-refactoring/">Read More</a>
            
        </description>
        <pubDate>Tue, 10 May 2022 19:00:10 -0400</pubDate>
        <link>https://www.thisprogrammingthing.com/2022/what-is-code-refactoring/</link>
        <guid isPermaLink="true">https://www.thisprogrammingthing.com/2022/what-is-code-refactoring/</guid>
        
        
        <category>Culture</category>
        
      </item>
    
  </channel>
</rss>
