Postcodes per Laravel: ricerca di codici postali GB e dati geografici
Postcodes for Laravel è il client di Joshua Dovey per la GB Postcodes API. Restituisce oggetti tipizzati per la ricerca di codici postali, per la geografia e per le ricerche di prossimità, con una regola di validazione Laravel e un fake per i test. Se hai già usato il precedente wrapper Laravel per Postcodes.io, questo pacchetto si connette a un servizio di codici postali diverso e include dati sui confini e sulla popolazione.
Cercare codici postali e dati geografici
La facade restituisce un oggetto Postcode anziché un array. Questo esempio usa M16 0RA, il codice postale dello stadio Old Trafford del Manchester United. get() restituisce null per un codice postale che non viene risolto; getOrFail() lancia una NotFoundException.
use JoshDovey\Postcodes\Facades\Postcodes;
$postcode = Postcodes::get('M16 0RA');
$postcode?->latitude();
$postcode?->longitude();
$postcode?->geography->localAuthorityName;
$postcode?->geography->wardName;L'oggetto geography include aree amministrative come i collegi parlamentari, gli integrated care board del NHS e le aree delle forze di polizia. Il pacchetto espone anche i dati del censimento e le stime di popolazione. Per i form, autocomplete() restituisce una collection Laravel di corrispondenze per un codice postale parziale, mentre search() risolve più codici postali in batch fino a 100 per ogni richiesta API.
Validare un codice postale rispetto al dataset
Le regole di validazione di Laravel possono usare ValidPostcode per verificare se un codice postale esiste, invece di controllarne soltanto il formato. unit() richiede un codice postale completo come M16 0RA.
use JoshDovey\Postcodes\Rules\ValidPostcode;
$request->validate([
'postcode' => ['required', ValidPostcode::unit()],
]);I valori con una struttura non valida falliscono localmente, senza alcuna richiesta API. Per impostazione predefinita, un valore formalmente valido passa se il controllo API genera un errore. Per rifiutarlo invece, chiama (new ValidPostcode)->strict() oppure imposta postcodes.validation.strict su true nella configurazione pubblicata.
Ricerca per distanza o per confine
Per un'area di consegna o un bacino d'utenza, radius() trova i codici postali vicini a un determinato codice postale. within() accetta un poligono, un multipoligono o una feature GeoJSON. Puoi anche calcolare la distanza tra due codici postali, richiedere una matrice di distanze o eseguire il reverse geocoding delle coordinate.
$nearby = Postcodes::radius('M16 0RA', radius: 2, limit: 100);
foreach ($nearby as $result) {
echo $result->postcode.' '.$result->distance;
}La distanza è espressa in chilometri per impostazione predefinita, con le miglia disponibili per singola chiamata o per il client. Le ricerche restituiscono la geometria dei confini per impostazione predefinita; withoutBoundaries() o una selezione fields riduce la risposta quando ti servono solo coordinate o nomi.
Installazione e test
Il pacchetto richiede PHP 8.2 o successivo e Laravel 12 o 13. Installalo con Composer, poi imposta la chiave API per la GB Postcodes API:
composer require joshdovey/postcodesPOSTCODES_API_KEY=your-keyLe risposte API andate a buon fine vengono messe in cache per un giorno per impostazione predefinita. Il client ritenta due volte, per impostazione predefinita, in caso di timeout, errori di connessione, limiti di frequenza temporanei ed errori del server. Non ritenta quando la quota del piano è esaurita.
Per i test, Postcodes::fake() sostituisce il client con risposte stub e registra le richieste:
use JoshDovey\Postcodes\Testing\Fixtures;
$fake = Postcodes::fake([
'v1/postcodes/validate*' => Fixtures::validation('M16 0RA'),
]);
$result = Postcodes::validate('M16 0RA');
$fake->assertSent('v1/postcodes/validate*');Il repository Postcodes for Laravel contiene il riferimento completo dell'API, le opzioni di configurazione e gli esempi per i confini e il testing.
Fonte originale:
https://laravel-news.com/postcodes-for-laravelAltri articoli recenti
Laravel AI 1.1 e 1.2: Agent Skills, Cohere e structured output più solidi
Le release 1.1.0 e 1.2.0 di laravel/ai portano gli Agent Skills, l'approvazione obbligatoria per i tool built-in e nuovi provider come Cohere e Laya self-hosted. Sul fronte qualità arrivano i fix allo structured output per Bedrock e il supporto alle provider options. Aggiornati anche i modelli di default, con Claude 4.7+ che ignora i sampling params.
Laravel 13.35.0: scheduler più controllabile, code più flessibili e response Markdown
Laravel 13.35.0 porta Schedule::alwaysOnOneServer(), il supporto a schedule:interrupt per i comandi di lunga durata, --memory in percentuale per queue:work e il nuovo metodo markdown() sulla response factory. Tante piccole migliorie anche a test, view compilate in parallelo e dischi local.
BashBox: un interprete Bash in sandbox per agenti AI in PHP
BashBox è un interprete bash scritto in puro PHP che permette di eseguire gli script generati dagli agenti AI senza mai ricorrere a proc_open, exec o shell_exec. Ogni comando è una classe PHP che lavora su un filesystem virtuale, con limiti di esecuzione, quote disco e accesso di rete configurabili. Ideale per chi sviluppa agenti con il Laravel AI SDK o altre librerie simili.