PHP 標準入力で名前と年齢を入力

PHPファイルはコマンドラインから名前と年齢を入力して受け取るプログラムです。

名前を入力する関数を作成

function inputName(){
    
    echo 'あなたの名前を教えてください。: ';
    $stdin_name= trim(fgets(STDIN)) ;  
    
    return checkName($stdin_name);  //(下記で記述)再帰関数でバリデーション関数を通った名前を返す
}

$stdin_name = inputName();

名前入力のバリデーションチェック関数

function checkName($name){
    
    if( empty($name)){
        echo '名前が空欄です。'.PHP_EOL;
        return inputName();  //再帰関数でエラーの時はもう一度入力させる
    }

    if( mb_strlen( $name) > 10 ){
        echo '10文字以内で入力してください。';
        return inputName(); //再帰関数でエラーの時はもう一度入力させる
    }
    
    return($name);
}

年齢バージョンも追加して全体のコードはこちら。

//標準入力
//PHPファイルはコマンドラインから実行してください。
//
//仕様
//
//「あなたの名前を教えてください。」出力
//↓
//入力 ex) Micael
//↓
//「Micaelさん、あなたの年齢は何歳ですか?」出力
//↓
//入力 ex) 20
//↓
//「Micaelさん(年齢:20)、ご登録ありがとうございます!」出力
//↓
//プログラム終了


function checkName($name){
    
    if( empty($name)){
        echo '名前が空欄です。'.PHP_EOL;
        return inputName();
    }

    if( mb_strlen( $name) > 10 ){
        echo '10文字以内で入力してください。';
        return inputName();
    }
    
    return($name);
}

function checkAge($age,$name){
    
    if( empty($age)){
        echo '年齢が空欄です。'.PHP_EOL;
        return inputAge($name);
    }

    if( !is_numeric($age)){
        echo '整数で入力してください。';
        return inputAge($name);;
    }
    
    return($age);    
    
}

function inputName(){
    
    echo 'あなたの名前を教えてください。: ';
    $stdin_name= trim(fgets(STDIN)) ;  
    
    return checkName($stdin_name); 
}



function inputAge($stdin_name){
    
    echo $stdin_name . 'さん、あなたの年齢は何歳ですか? :';
    
    $stdin_age = trim(fgets(STDIN));
    
    return checkAge($stdin_age, $stdin_name);
}

$stdin_name = inputName();
$stdin_age = inputAge($stdin_name);

echo $stdin_name . 'さん(年齢:' . $stdin_age .')、ご登録ありがとうございます!';

これをもう少しスッキリさせると

<?php

//39, 標準入力
//PHPファイルはコマンドラインから実行してください。
//
//仕様
//
//「あなたの名前を教えてください。」出力
//↓
//入力 ex) Micael
//↓
//「Micaelさん、あなたの年齢は何歳ですか?」出力
//↓
//入力 ex) 20
//↓
//「Micaelさん(年齢:20)、ご登録ありがとうございます!」出力
//↓
//プログラム終了


function checkName($name){
    
    $check_flag = true;
    
    if( empty($name)){
        echo '名前が空欄です。'.PHP_EOL;
        return false;
    }

    if( mb_strlen( $name) > 10 ){
        echo '10文字以内で入力してください。';
        return false;
    }
    
    return $check_flag;
}

function checkAge($age){
    
    $check_flag = true;
    
    if( empty($age)){
        echo '年齢が空欄です。'.PHP_EOL;
        return false;
    }

    if( !is_numeric($age)){
        echo '整数で入力してください。';
        return false;
    }
    
    return $check_flag;
    
}


function input($stdin_name = ''){
    
    $stdin_value= trim(fgets(STDIN)) ;
    
    
    if( !empty($stdin_name) ){
        
        $check = checkAge($stdin_name);
        
    }else{
        
        $check = checkName($stdin_value);
        
    }
    
    if( !$check ){
        
        return input();
    }
    
    return $stdin_value; 
   
}

echo 'あなたの名前を教えてください。: ';
$stdin_name = input();

echo $stdin_name . 'さん、あなたの年齢は何歳ですか? :';
$stdin_age = input($stdin_name);

echo $stdin_name . 'さん(年齢:' . $stdin_age .')、ご登録ありがとうございます!';

?>