Combining ReactPHP and ReactJS — Part I
This text is the first in a series of articles whose purpose is to demonstrate how to build apps that combine the multiple potencies of ReactPHP and ReactJS.
There exists a plethora of stacks — combinations of technologies (languages and-or frameworks) typically canonized as fancy abbreviations reflective of individual amalgam components (LAMP, MERN, MEAN, and the like) — for the development of web-based apps. ReactPHP and ReactJS, near-complete homophones (perfect if you remove the language-specific suffixes) though potent on their own, are immensely robust when used in tandem. The former is a powerful suite of event-driven PHP technologies, and the latter is a popular library whose primary purpose is enabling the creation of user-interfaces. A general scarcity of elaborate textual descriptions of tandem-use of ReactPHP and ReactJS is the impetus for this text — and series, whose viability is pushing the said ideas into technical orthodoxy.
ReactJS — The “Fake” React?
Created circa 2013 by Facebook, ReactJS has, since its inception, become a staple of modern application development. ReactJS powers a bevy of open-source and proprietary bespoke projects — and continues to be blogged about, seemingly ad-infinitum. It has, through multiple versions, served its purpose as a tool for the creation of robust User Interfaces for the web — and has even spun off into the mobile development scene (with significant nuance). Assuming that you, the reader, have some proficiency with React’s idiosyncrasies (localized component state, JSX, and lifecycles), integrating React into a dual React-powered application should be a somewhat easy proposition. For those unfamiliar with ReactJS, the following snippet should suffice as a showcase of the aforestated ideas.
ReactPHP — The “Real” React?
Often derided for many reasons — a lack of support for asynchrony being one of them — PHP remains a leviathan in the vast seas of web development. ReactPHP, first released to the public sometime in 2012, is a viable ameliorator of all such derision. Packaged as a set of asynchronous utilities — an event loop, promises, HTTP client and server components, as well as filesystem and child process interaction tools — ReactPHP is a nice infusion of non-blocking I/O in an overwhelmingly synchronous PHP ecosystem. Think of it as Node.JS for PHP — that can run sans-C/C++ extensions — atop idiomatic PHP — and is supercharged by them (libuv + ReactPHP = Rinnegan type chakra).
The real React — often referred to as such in some small circles of the web — is, by virtue of being a non-blocking I/O solution, a means of increasing PHP’s capacity for processing application throughput. It leverages the power of an event-loop and processes, in interleaved sequences, arduous I/O operations. One of the many tractable benefits is the easy creation of long-running processes — HTTP servers, daemons, and the like: applications infrequently mentioned in relation to the PHP language. A simple HTTP server, like the one shown below, is a neat application of the ReactPHP suite — and is a strong basis for the entries to follow.
From a strategy-perspective, the approach to conjunctive ReactPHP-ReactJS use proffered in this series is defining a consumable RESTful API in ReactPHP and a poignant interface with a multitude of ReactJS artifacts and ideas.
To be explored further, in the next piece, are foundation ReactPHP and ReactJS principles concerning a simple phonebook application.