41554 blogs · [ { "id": "01a087c3-0a02-721f-932d-f9d6a0e8c415", "title": "A Model That Asks Does Not Invent", "url": "https://blog.nette.org/en/php-tool-calling-structured-output", "published_at": "2026-08-17T15:07:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-49777eb1ec71", "title": "A Model That Asks Does Not Invent", "url": "http://blog.nette.org/en/php-tool-calling-structured-output", "published_at": "2026-08-17T15:07:00+00:00" }, { "id": "01a087c3-09fc-7102-8834-58da5ab45194", "title": "AI-Access: One PHP API for Five Language Models", "url": "https://phpfashion.com/en/ai-access-php-library-for-openai-claude-gemini", "published_at": "2026-08-16T16:46:00+00:00" }, { "id": "01a087c3-09ff-7263-8134-4354f0096bce", "title": "A replacement for PHP ext-imap that has no dependencies", "url": "https://phpfashion.com/en/a-replacement-for-php-ext-imap-that-has-no-dependencies", "published_at": "2026-08-11T16:30:00+00:00" }, { "id": "01a087c3-0a00-736b-a82d-d1df64720f80", "title": "MySQL: Ten Rules for a Schema That Won't Betray You", "url": "https://phpfashion.com/en/ten-rules-for-a-mysql-schema-that-wont-betray-you", "published_at": "2026-07-28T08:00:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a13dc05b", "title": "Nette Mail 4.2.0: So Your Emails Actually Arrive", "url": "https://blog.nette.org/en/nette-mail-email-deliverability", "published_at": "2026-07-27T16:23:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-49777eeaaf26", "title": "Nette Mail 4.2.0: So Your Emails Actually Arrive", "url": "http://blog.nette.org/en/nette-mail-email-deliverability", "published_at": "2026-07-27T16:23:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a214038f", "title": "A form inside a form? HTML says no, Nette 3.3 says yes", "url": "https://blog.nette.org/en/nested-forms", "published_at": "2026-06-29T21:31:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-49777fcce27b", "title": "A form inside a form? HTML says no, Nette 3.3 says yes", "url": "http://blog.nette.org/en/nested-forms", "published_at": "2026-06-29T21:31:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a29b102f", "title": "Your AI Agent Is Only as Good as Your Types", "url": "https://blog.nette.org/en/ai-agent-only-as-good-as-your-types", "published_at": "2026-06-26T07:15:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-4977805455c0", "title": "Your AI Agent Is Only as Good as Your Types", "url": "http://blog.nette.org/en/ai-agent-only-as-good-as-your-types", "published_at": "2026-06-26T07:15:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a336e839", "title": "Component Model 4.0: top-down and no more magic", "url": "https://blog.nette.org/en/nette-component-model-4-0", "published_at": "2026-06-25T21:30:01+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-4977812d90bc", "title": "Component Model 4.0: top-down and no more magic", "url": "http://blog.nette.org/en/nette-component-model-4-0", "published_at": "2026-06-25T21:30:01+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a41b89cb", "title": "A Quarter Century of CSRF. Now the Browser Finally Handles It", "url": "https://blog.nette.org/en/quarter-century-of-csrf", "published_at": "2026-06-13T13:19:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-497781420186", "title": "A Quarter Century of CSRF. Now the Browser Finally Handles It", "url": "http://blog.nette.org/en/quarter-century-of-csrf", "published_at": "2026-06-13T13:19:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a41fe14e", "title": "Nette Http 3.4.0 Brings Protection Against SSRF Attacks", "url": "https://blog.nette.org/en/nette-http-ssrf-protection", "published_at": "2026-06-13T12:30:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-4977816671c2", "title": "Nette Http 3.4.0 Brings Protection Against SSRF Attacks", "url": "http://blog.nette.org/en/nette-http-ssrf-protection", "published_at": "2026-06-13T12:30:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a4624975", "title": "Tracy Learned to Speak with AI Agents", "url": "https://blog.nette.org/en/tracy-debugger-ai-agents", "published_at": "2026-05-25T17:43:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-4977818d59d7", "title": "Tracy Learned to Speak with AI Agents", "url": "http://blog.nette.org/en/tracy-debugger-ai-agents", "published_at": "2026-05-25T17:43:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d6a49c6fe4", "title": "Process: running external programs from PHP without the pain", "url": "https://blog.nette.org/en/running-external-programs-in-php", "published_at": "2026-05-11T19:41:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-497781e9588d", "title": "Process: running external programs from PHP without the pain", "url": "http://blog.nette.org/en/running-external-programs-in-php", "published_at": "2026-05-11T19:41:00+00:00" }, { "id": "01a087c3-0a00-736b-a82d-d1df64d95197", "title": "100vw is a trap! It can't measure the viewport width", "url": "https://phpfashion.com/en/how-to-fix-100vw-scrollbar", "published_at": "2026-05-04T14:39:00+00:00" }, { "id": "01a087c3-0a03-7075-8323-d5579fca365c", "title": "Latte as a Ghost in the Machine: a Template Compiler for Tracy", "url": "https://blog.nette.org/en/latte-template-compiler-for-tracy", "published_at": "2026-04-25T12:04:00+00:00" }, { "id": "01a08d7b-7ee0-722e-8bf9-4977824177d3", "title": "Latte as a Ghost in the Machine: a Template Compiler for Tracy", "url": "http://blog.nette.org/en/latte-template-compiler-for-tracy", "published_at": "2026-04-25T12:04:00+00:00" }, { "id": "01a087c3-0a00-736b-a82d-d1df6589b52a", "title": "Duck Typing Is Dead, Dave!", "url": "https://phpfashion.com/en/duck-typing-is-dead", "published_at": "2026-04-06T21:58:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d69cfe263e", "title": "How to Make Your Code Worse by Fixing PHPStan Errors", "url": "https://phpfashion.com/en/phpstan-fix-making-things-worse", "published_at": "2026-02-21T14:25:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d69db13369", "title": "What Claude Code Can Do", "url": "https://phpfashion.com/en/what-claude-code-can-do", "published_at": "2026-01-09T15:21:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d69e4fc486", "title": "The Ultimate PHP Comparison Reference is Here!", "url": "https://phpfashion.com/en/ultimate-php-comparison-reference", "published_at": "2025-12-26T19:37:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d69f497cd2", "title": "How to Install Claude Code: A Beginner's Guide", "url": "https://phpfashion.com/en/how-to-install-claude-code-beginners-guide", "published_at": "2025-05-19T13:44:00+00:00" }, { "id": "01a087c3-0a02-721f-932d-f9d69ff20156", "title": "100 minutes is less than 50? PHP paradoxes during time changes", "url": "https://phpfashion.com/en/php-daylight-saving-datetime", "published_at": "2025-04-04T09:01:00+00:00" } ] posts Claim your blog
Back to phpfashion.com
Blog · corpus.blog/blogs/phpfashion.com/posts

phpfashion.com

phpfashion.com

2026

2025