Como capturar a entrada do usuário usando STDIN no PHP CLI

Se você estiver escrevendo um script PHP CLI, isso será útil. Interessado em saber como capturar a entrada do usuário para fazer uma pergunta ou registrar dados? Veja isso:

<?php

// OPENING LINE BREAK
print PHP_EOL;

// ASK QUESTION
print 'What is your birthday? (mm/dd/yyyy) ';

// OPEN STDIN HANDLE
$stdin
= fopen( 'php://stdin' , 'r' );

// GET ANSWER
$answer
= fgets( $stdin );

// CLOSE STDIN HANDLE
fclose
( $stdin );

// TRIM ANSWER (LINE BREAKS, WHITESPACE, ETC.)
$birthday
= trim( $answer );

// CALCULATE AGE USING DATETIME CLASS
$age
= DateTime::createFromFormat( 'm/d/Y' , $birthday )->diff( new DateTime( 'now' ) )->y;

// LINE BREAK FOR SPACING
print PHP_EOL;

// PRINT AGE
print 'You are ' . $age . ' years old.' . PHP_EOL;

// CLOSING LINE BREAK
print PHP_EOL;