PHPで標準入力を行う方法
スポンサーリンク

Paizaで利用されている、PHPの標準入力が意味不明だったので調べました。本記事は、PHPの標準入力について、使い方だけでなく、もう少し背景を知りたい人向けに書いています。 標準入力って何?の答えは、PHP標準入力は、PHPが提供している一つの入力ストリームになります。

ストリームとは?

平たく機能という認識で良いのではないでしょうか。入力、出力ストリームときたら、入出力の機能なんだという理解で良いと思います。 データを動的に読み込んでいく処理を水の流れに例えてストリームと呼んでいます。PHPでも1行ずつファイルを読みながら処理できたり、ファイル全部読み込んでから処理できたりしますが、前者の処理のことをストリーム処理と言います。

余談ですが、データ総量わかんない時は、ストリーム処理でやった方が無難です。ファイルが大きすぎるとサーバーが止まります。

スポンサーリンク

PHPの標準入力とは何か

ストリーム処理の中の入力処理関数群の中の一つです。fgetsという関数の中にSTDINという標準入力の抽象データの定数をパラメータとしてセットします。

stdinはOSの為の識別子の標準入力の名前です。ファイルディスクリプタについて掘り下げます。

ファイルディスクリプタ

OSが入出力、エラーを制御する為の識別子のことをファイルディスクリプタと呼びます。標準入力はstdinと表されます。他に標準出力(stdout)、標準エラー(stderr) があります。

ストリームはKernelというOSのコアプログラムが制御しているため、稼働中のプログラムにファイルディスクリプタが設定されていて、0:stdinを入力、1:stdoutを出力、2: stderrとしています。

PHPで標準入力を利用する

標準入力は、キーボード入力を受け取れるので、LinuxOS上で動作する仕組みをPHPで組むことができます。出力と合わせて、シェルの作成とかもできます。LaravelのartisanやCakePHPのbakeは、この仕組みが利用されているんだと思います。

以下、利用方法を一応コードで書いて行きます。

<?php
$line = trim(fgets(STDIN));

fgetsの中に定数を入れれば利用できます。このline変数に対してデータが入ってきます。trim関数を利用しているのは、エンターキー押したときの改行コードが含まれてしまうので、除去するために利用しています。

PHPの標準入力で2行以上のデータを得たい時

先ほどの方法ですと、1行のデータしか取得ができませんよね。複数行データ取得したい時は当然出てきますので、複数行データ取得する時の方法を書いて行きます。

<?php

while($line = fgets(STDIN)) {
   $stdinDatas[] = trim($line);
}

var_dump($stdinDatas);

whileで書けば取れます。回数決まってればforでも可能ですが、ストリームの良いとこなくなります。foreachは配列が来るわけではないので利用ができませんのでご注意ください。

以上で、PHPでの標準入力について調べた結果の共有となります。


働きに見合った給与は貰えていますか?
ご自身の単価はいくらか分かりますか?

あなたの開発経験が3年以上で、単価が分からない、給与が見合わない、という自覚があるのであれば、転職するしないを抜きにして、他社の話を聞いたり、フリーランスエージェントの話を聞きましょう。技術にそこそこ自信があり、コミュニケーションも普通に取れるのであれば、あなたの売り上げは60万円近く単月で出せるはずです。

もし客先常駐メインの会社であれば、単月の売り上げの50%以上貰えてなければ、あまりいい会社ではないかもしれません。 Sierの中には、客先への単価請求額が60万円なのに、本人の月の給与は総支給額が26万円程度であるという人がざらにいます。

この人はもっと貰っていないとおかしい人ですよね。

営業や上司に騙されない為に、自分が本当はいくら給与貰えるエンジニアなのかは絶対に知っておいた方が良いです。

私がおすすめするのは、 Webサービスから、自分が参画できそうなプロジェクトがいくらなのかを知ることができるサイトです。

全国の求人情報から合った仕事を自分で探せて興味がある仕事の情報をエージェントから貰うことができます。自分に合う仕事を探せるというところがおススメです。

いきなり自分で案件を探すのが難しい人は、エージェントと組んで、自分に合った案件に参画していくのがおススメです。

高額案件、雇用形態もフリー、正社員、派遣と豊富です。この会社に所属するわけではないので、営業も自分も対等な関係で、就業という目標を一緒に目指せるのでおススメです。

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

おすすめの記事