---
title: PHP
canonical: 'https://www.dealmobile.co.uk/writing/tag/php'
url: 'https://www.dealmobile.co.uk/writing/tag/php'
type: Tags
---

# PHP

## [Testing an API client without the network](https://www.dealmobile.co.uk/writing/testing-an-api-client-without-the-network.md)

Published 2026-10-21

How the Puzzler PHP SDK signs its requests and turns HTTP errors into exceptions, and how one protected method lets the tests check both with no credentials and no connection.

## [Rewriting an old PHP scraper around curl_multi](https://www.dealmobile.co.uk/writing/rewriting-an-old-scraper-around-curl-multi.md)

Published 2026-10-21

How Scrape’s download loop went from one file at a time to a pool of parallel cURL transfers, and what the rewrite lost from the older code that read directory listings.

## [One JSON shape for RSS, Atom and RDF feeds](https://www.dealmobile.co.uk/writing/one-json-shape-for-rss-atom-and-rdf.md)

Published 2026-10-21

How RSS to JSON turns three feed formats into one predictable array, and the namespace cases that took two attempts to get right.

## [Live coverage on Apple News from PHP](https://www.dealmobile.co.uk/writing/live-coverage-on-apple-news-from-php.md)

Published 2026-10-21

How the Apple News API library builds Live Coverage articles, the rules it checks before Apple does, and the request metadata that starts and ends the coverage.

## [Writing down an upload protocol and testing servers against it](https://www.dealmobile.co.uk/writing/testing-servers-against-an-upload-protocol.md)

Published 2026-10-20

How TurboPush’s chunked upload protocol is written down in PROTOCOL.md, how a small Node suite checks any server against it over HTTP, and the two bugs it found in my own PHP endpoint.

## [Fetching a feed from a URL you don’t trust](https://www.dealmobile.co.uk/writing/fetching-feeds-from-untrusted-urls.md)

Published 2026-10-20

How RSS to JSON stops a feed URL from reaching private addresses on the server’s own network, by checking every address a host resolves to, pinning the connection to the one it checked, and checking every redirect again.

## [One source of truth behind a static app](https://www.dealmobile.co.uk/writing/one-source-of-truth-behind-a-static-app.md)

Published 2026-10-19

How the second version of Where Should I Live keeps its data in a headless CMS, ships it as static JSON, and refuses to build if the data has drifted.

## [Making large uploads resumable with TurboPush](https://www.dealmobile.co.uk/writing/making-large-uploads-resumable.md)

Published 2026-10-19

How TurboPush splits big files into chunks, retries the ones that fail, carries on after a page reload, and keeps the PHP side safe when chunks arrive twice or all at once.

## [Publishing to Apple News from PHP](https://www.dealmobile.co.uk/writing/publishing-to-apple-news-from-php.md)

Published 2026-03-21

What it takes to publish an article to Apple News from PHP, from signing requests and building multipart uploads to the JSON details Apple’s format is strict about.

---

Index of this site: [llms.txt](https://www.dealmobile.co.uk/llms.txt)
