setechsolutions/php-whois
A PHP package for performing WHOIS lookups on domains, retrieving registration and ownership details from WHOIS servers. Useful for domain availability checks, expiry information, and DNS-related tooling in Laravel or plain PHP applications.
isAvailable() and a null from lookup() give a "not registered" signal without a third-party API key or per-query cost — a genuine build-vs-buy lever for a low/medium-volume feature.expiresAt() returns DateTimeImmutable (or null when a registry doesn't publish it), which is directly schedulable: reminder cadences, renewal nudges, abandonment emails.clientHold, pendingDelete or hijack-adjacent changes for customers holding domains with us.Whois facade with zero setup, and env-configurable WHOIS_MODE / WHOIS_TIMEOUT mean a thin slice can ship without infra or platform work.Iodev\ namespace and the replace entry for io-developer/php-whois. Any product area relying on this as a drop-in replacement is now on a legacy branch — that is a roadmap item, not a composer bump.Adopt when:
InvalidDomainException, UnsupportedTldException, ConnectionException, RateLimitException — rather than silent nulls, so availability results never get conflated with errors.Look elsewhere or plan around it when:
io-developer/php-whois replacement. That contract is gone in 5.0; you must stay on ^4.2 (the 4.x branch) and accept it as a maintenance dead-end. Make this a conscious decision with an owner.MemcachedLoader is removed; you cache DomainInfo::toArray() yourself. Budget for it.null instead of 0/'' — the last one will break naive comparisons in renewal logic if it isn't audited.Executives: We can add domain availability, expiry and registrar intelligence to the product with no per-lookup vendor cost and no new infrastructure — it's an open-source PHP library that drops into the Laravel app we already run. The honest framing: registry lookups are best-effort and rate-limited, so we wrap them in caching and never let a single lookup drive a purchase decision; the RDAP-first design puts us on the protocol registries are standardizing on rather than the one being retired. The business case is cost avoidance versus a commercial WHOIS API at our volume. One caveat to fund: 5.0 is a breaking rebuild, so any existing integration is a small, time-boxed migration with an owner and date, and teams needing the old drop-in behavior stay pinned to 4.x as legacy.
Engineering: 5.0 is a clean modern API — immutable DomainInfo, DateTimeImmutable dates, JSON-serializable results (cache-friendly), a typed exception hierarchy you can branch retry/backoff on, array options, and a publishable config/whois.php. No Laravel dependency, so the same code runs in queues, cron and CLI. What we need from you: pin ^5.0; add a TTL cache keyed by domain and queue lookups behind a rate limiter; handle RateLimitException with backoff; check TLD coverage via UnsupportedTldException before we promise a market; and confirm the Laravel 13 claim against our installed version rather than trusting the matrix. For the 4.x migration, audit every place we compare dates or read ->creationDate / ->expirationDate, since those values are now nullable objects.
How can I help you explore Laravel packages today?