Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 82
  1. Repetition and Insight: What is new in PHPUnit 13.3?

    Reliably detecting flaky tests and tolerating them in a controlled way, code coverage through the lens of your classes, branch and path coverage made visible, and a filter by test size: I walk you through what is new in PHPUnit 13.3.

  2. How PHP generates machine code

    The JIT is not switched on in any default installation.

  3. Digital sovereignty is written in PHP

    Germany is spending €108 million to move its federal websites onto a PHP application; in 2025, The PHP Foundation received $730,534 in funding.

  4. Succession, release cycle, and 26 years of PHPUnit

    AFUP asked me what happens to PHPUnit if I stop, why there has been a new major version every year since 2017, and where I learned to think about testing.

  5. How PHP optimises bytecode

    OPcache is called a cache, but it does more than keep bytecode around: fifteen passes sit between the compiler and the executor and rebuild it.

  6. How PHP executes bytecode

    Which compiler built your PHP binary is a performance decision: until PHP 8.5, a PHP built with Clang was up to 44 % slower than one built with GCC, depending on the benchmark.

  7. So you received a security report. Now what?

    A guide for PHP project maintainers, from the PHP Foundation Ecosystem Security Team.

  8. A language has non-functional requirements, too

    Nobody decides whether a language is modern.

  9. Four out of five

    How does PHP in 2026 compare with the current ideas about designing modern languages?

  10. Your composer.lock knows what a carmaker only guesses

    A car manufacturer lists an Android botnet in its open source attribution.

  11. When static analysis runs your code

    A security vulnerability in PHPCSUtils revealed an eval() call in a static analysis tool.

  12. Untouched tests are half the proof

    My favourite kind of bug fix only adds a new regression test and leaves every existing test untouched.

  13. Composer and Packagist under supply chain stress

    2025 and 2026 proved to be a stress test for the supply chains of all package ecosystems.

  14. Stories about systems that resist people

    Five of the best television series I have ever seen are about the gap between what people want to achieve and what institutions allow them.

  15. Precision and Clarity: What is new in PHPUnit 13.2?

    Selecting exactly the tests you want, finer control over the order they run in, faster and clearer output when they fail, and more expressive test doubles: I walk you through what is new in PHPUnit 13.2.

  16. Merging code coverage data

    Merging code coverage data from parallel CI jobs has long been fragile and error-prone.

  17. What your test run already knows

    On every run, PHPUnit knows how long each test took, how much memory it used, and why it failed.

  18. Speed as a security feature

    How fast is your test suite, and what vulnerabilities does an LLM agent therefore fail to detect?

  19. Turbo-Charging Your PHPUnit Suite

    Slow tests destroy flow, kill TDD, and erode trust until nobody runs the suite.

  20. Test-Driven Security

    For every vulnerability we find in production, there is a test that, had it existed, would have prevented it.

  21. Debugging as a design goal

    Why do some bugs feel like a short detective story, while others feel like a never-ending thriller?

  22. Code I do not have does not cause any problems

    Not every problem requires new code.

  23. The attack surface begins in the repository

    We protect what exists.

  24. Hardening GitHub Actions workflows

    A walk through the GitHub Actions weaknesses in PHPUnit's workflows, how each one could have been exploited, and what was changed to close them.

  25. ComoCamp 2026

    Three days in Vienna, three days of ComoCamp: my report on inspiring workshops, exciting open space sessions, and the uniquely open, collaborative atmosphere.

  26. Closures, Clarity, and Control: What is New in PHPUnit 13.1?

    Closures as data providers, richer Open Test Reporting, custom issue trigger resolvers, and significant changes to code coverage: I walk you through the changes.

  27. Technical debt is not malice

    Technical debt is not malice, it is context.

  28. Debugging Performance in PHP

    "It feels slow" is not a diagnosis.

  29. The Bouncer in the Dependency Resolver

    Composer 2.9 moved security advisory enforcement from an opt-in third-party package into the resolver itself.

  30. Everything we have

    In a world with endless possibilities for code to be wrong, one approach alone is not enough to make our software truly robust.

  31. Security through chaos

    This practical deep dive into the philosophy behind "security through chaos" shows that security does not come from perfect foresight, but from surviving chaos.

  32. Beyond Best Practices

    Testing, code reviews and documentation are all essential prerequisites that constrain the autonomy of AI, thereby safeguarding human agency in software development.

  33. Effective Code Reviews

    Pair, pull, or post-push?

  34. Faster than understanding

    An AI coding agent implemented a complex software metric in 15 minutes.

  35. From anti-pattern to clarity

    The any() matcher is deprecated.

  36. Better than withConsecutive()

    I explain how PHPUnit 13's parameter set matchers finally solve the problem that made upgrading to PHPUnit 10 such a challenge.

  37. Replay Testing

    Replay Testing leverages the memory of your event sourcing system to test new versions with real history and shows which oracles truly inspire confidence in your changes.

  38. From Events to Insights

    Event Storming, DDD, CQRS, and Event Sourcing are intertwined: the tests not only check the events, but also become living documentation and a bridge between technical expertise and code.

  39. How my understanding of software changed

    A classic database only stores the "now" and forgets history.

  40. Data Provider or Properties?

    One test, hundreds of inputs, and an automatic edge case search.

  41. Smaller input, greater insight

    Shrinking is the unsung hero of property-based testing.

  42. Property-Based Testing

    We only test what we think of.

  43. With phpc.social and phpc.tv, the PHP community is building its own donation-funded online spaces in the Fediverse – free from algorithms and fascist tech bros.

  44. Type-Safe Collections

    Does PHP really need generics?

  45. How PHP and its ecosystem test each other

    PHP tests Laravel, Symfony, PHPUnit, and more every night.

  46. The Stub/Mock Intervention

    Self-sabotaging mock objects?

  47. A festive break

    I take a break from my weekly articles and invite you to a free online event where I will present the latest improvements to PHPUnit.

  48. A flight recorder for your code

    Your PHP project has no tests and an upgrade is pending?

  49. Seeing the Truth: Test Oracles

    Your tests are successful.

  50. Testing with DTOs and Value Objects

    Know the differences between data transfer objects and value objects and understand why immutability helps with testing.