PHP言語を基礎から学ぶサイト

PHPについて初心者のWEBサイト管理人が情報をまとめていきます。HTMLとCSSをマスターしたらいよいよプログラム言語を一つ挑戦したいですよね。

http://blaineblogger.com/wp-content/uploads/2017/03/php.jpg
PHP言語
http://blaineblogger.com/wp-content/uploads/2017/03/2.jpg
PHP言語
http://blaineblogger.com/wp-content/uploads/2017/03/program.jpg
PHP言語

作者別: admin


サイトがうまく表示されない場合


もし表示されない場合は、以下の点についてもう一度確認してください。

• httpd.conf の編集内容が合っているか
• httpd.conf の編集後にApache を再起動したか
• phpinfo.php のファイル名、内容、ファイルの保存場所が合っているか
• Webブラウザで指定したURLが合っているか

詳しい設定情報を確認したい場合などは、
WebサーバやPHPに関するいろいろな情報が表示される画面を活用しましょう。

ただし、phpinfo.phpのブログラムは、詳細な設定情報を見られるので大変便利なのですが、言い換えると、サーバの設定情報が丸見えになってしまうということです。
これは、セキュリティ面かうすると大変危険です。
phpinfo.phpのプログラムは、設定を確認するときにだけ作成し、確認し終わったら削除することを強くお勧めします。

プログラムを作る手順


PHPでプログラムを作って動かすまでの作業の流れを説明します。
使うプログラミング言語がPHPの場合に限らず、Webアプリケーションを作って動かす場合は、これと同じような手順になります。
①まず、エディタを使ってPHPのプログラムを作る

②作ったPHPのプログラムをWebサーバが管理する所定のフォルダに置く。
※プログラムを作るコンピュータとWebサーバのコンピュータが別の場合、FTPなどでファイルをWebサーバに転送します。

③Webブラウザを使ってWebサーバにアクセスし、プログラムの動作を確認する。

以上がプログラム作成の主な手順です。

ユーザー定義関数


PHPの関数には 2種類あります。
ひとつめは「内部関数」といい、 rand 関数や count 関数など PHP にあらかじめ用意されている関数です。
もうひとつがユーザーが独自に作成して定義した関数です。
この、ユーザーが独自に定義した関数のことを「ユーザー定義関数」と言います。
これには、内部関数のように用意されたものとは違い、自分でオリジナルな処理をまとめて、ひとつの関数として定義できるという違いがあります。

ユーザ一定義関数内では、PHP の内部関数など、PHP で有効なすべてのコードを使用することができます。
ユーザー定義関数では、関数名や引数の順番、引数名なども自分で定義しないといけません。
ユーザ一定義関数は、Webアプリケーションを作成するにあたって、よく使われる手法のひとつなので、しっかりと使い方を覚えておきましょう。

また、ユーザ一定義関数を記述する場所は、関数を呼び出す位置の前でも、関数を呼び出す位置の後でも好きな箇所に記述できます。
なお、一般的には、ユーザ一定義関数の関数群を別ファイルに記述しておき、 実行する PHP ファイルから使用する関数を呼び出すという方法が一般的です。

様々なロジックを書いてみよう


様々なロジックを自由自在に操れるようになるためには、PHPに用意されている関数と制御文を使用して、とにかく簡単なスクリプトをどんどん作成してみましょう。
他にも自分で関数を別ファイルに定義したり、いろいろなロジックを考えたりして、実際にPHPで表現していく練習が必要です。

PHPにはあらかじめ定義されている関数が多く用意されています。
あまりの多さと周途が多様にあるために、関数の使用方法と用途を調べる必要が出てきますが、そういった場合には、オンラインにあるPHP関数のマニュアルを利用するといいでしょう。
Windows ユーザーなら、ヘルプファイルのフォーマットである chm 版のマニュアルもあるので、ローカルで利用することもできます。

上記のマニュアルなどを利用し、より多くのロジックを自分のレパートリーとして習得していきましょう!

ヘッダ情報とは


では、ヘッダとはどうのような情報なのでしょうか。通常は目にすることが、できませんが、「ie HTTP Headers」(http://www .blunck. info/iehttpheaders/iehttpheaders.html)というヘッダ情報を視覚化するソフトウェアがあります。ただし、Windows のlntplorerでしか利用できません。インストールして、 HTTP ヘッダ情報を通じて、フラウザとサーバがどのような会話をしているか確認してみましょう。

インストールは、ダウンロードした「ieHTTPHeadersSetup.exe」 をダブルクリックして、ウィザードに従うだけです。なお、Internet Explorer7では、 Windows の再起動が必要になる場合があります。 インストールが完了したら、Internet Explorerのメニューから[表示]→[エクスプローラバー]→ [ieHTTPHeaders」と選択します。表示結果の黒字部分はサーバへの HTTP リクエス卜情報です。

リクエス卜情報には、使用している Webフラウザや OS (User-Agent)、接続先サーバーのホスト名、リファラ(リンク元情報)、 Cookieなどの情報も含まれています。 青字で表示されている部分はサーバからの HTTP レスポンス情報です。 レスポンス情 報には、iServer Jというヘ ッダ情報があります。 この情報は、「Apache /l . 3.37 (Unix)」 のように、使用しているWebサーバを示しています。なお、サーバの設定で表示しないようにしている場合もあります。

WebブラウザからApacheへURLリク工ストを行った時、Apache は拡張子の判別をします。たとえば、「http://localhost/question.php」へアクセスを行った場合、Apacheは拡張子が「.php」であることを判別して、PHPエンジンを使ってファイルを実行します。Windowsが、実行するアプリケーションを決めるのに、ファイルの拡張子を判別するのと同じです。ちなみに、「.html」など、「.php」 以外の拡張子を PHP スクリプ卜として解釈させることも可能です。拡張子を判別してアプリケーションを選択する設定は Apache の設定ファイルで行います。

PHPを使ってWebアプリケーション


Virtual BoxのインストールとISOイメージのダウンロードができたら、インストールを開始しましょう。
まずは、Virtual BoxでこれからLinuxをインストールする“仮想マシン”を作成します。

Virtual Boxを起動後、画面左上にある「新規」をクリックします。
「新規」をクリックすると「仮想マシンの作成」画面が開きます。
この画面で、まず「名前(任意の名前でOK)」を付け、これからインストールしたいOSの「タイプ」と
「バージョン」を選択します。CENT OSの場合、「タイプ」は「Linux」、「バージョン」は
「Red Hat(64-bit)」を選択します。

次に「メモリーサイズ」を選択してください。仮想マシンでどれだけメモリを使えるか、ということになるので、
大きくすれば仮想マシンの処理スピードが上がりますが、その分、本体側(ホストOS)の処理が遅くなる場合が
あります。

Linuxのデスクトップ環境は1024MBもあれば動きますが、2048MB以上のメモリがあえるパソコンでしたら、
2048MBぐらいにしておけばより快適に使用可能となります。

「ハードディスク」では、仮想マシン用のハードディスクを作るかどうかを設定します。これからLinuxを
インストールしたいので、「仮想ハードディスクを作成する」を選択してください。

ここまでの設定が完了したら、「作成」をクリックしてください。

「ファイルの場所」、「仮想ハードディスクを作成する場所」自動設定のままで構いません。

「作成」をクリックすると「仮想ハードディスクの作成」画面が開きますので仮想ハードディスクのサイズを設定
してください。10GBもあれば十分ですが、パソコンのハードディスクに余裕があれば64GB程度にしておきしょう。

「ハードディスクのファイルタイプ」は「VDI(Virtual Disk Image)」を使用すればよいです。

ここまで設定したら「作成」をクリックしてください。

クリックすると仮想マシンが作成されるので、「起動」をクリックして仮想マシンを起動してください。
次に 「起動ハードディスクを選択」画面が開くので、インストール用のISOイメージファイルを選択して
「起動」をクリックしてください。

すると CENT OS7(Linux)がインストールされます。


型キャスト構文について考える


PHPはデータ型に比較的寛容な言語だと言えます。データの中身からPHP自身が自動的に分析、判断し、その時点で適切な入れ物(型)をきちんと割り当ててくれるのが、 PHPという言語の持つ大変優れたところだと言えます。

 しかし、 だからといってすべての場面においてPHPの寛容さに頼っているわけにもいけません。

 具体例をあげると、カウンタ変数$iが数値、連想配列 $defs[‘age’]は文字列、といった状況の時にはPHPの持つその寛容さに頼ることはできません。「===」演算子は値そのも のだけでなく、データ型がきちんと一致しているのかも判定しますので、例えば、数字の10と文字列の’10’は違うものと認識されてしまうのです。このような場合では、型キャストという仕組みを使って、デー タ型を明示的に変換する必要があります。

どういうことかというと、「変数 $defs[‘age’]は整数 (int)として扱う」と PHP側に伝達しているのです。このため、変数 $iと$defs[‘age’] は数値同士の比較となります。 数値型キャストで指定できる主なデータ型には、 (int)以外にも、(double)、(string)、(bool)といったものがあります。

変数の寿命


「こんにちは、世界リやi100Jのようなデータの寿命は、その文の中だけであると言いました。もしもあとから同じデータにアクセスしたいという場合には、データを変数という入れ物に保存しておく必要があったわけです。

もっとも、変数の寿命も永遠というわけではありません。変数は、そのページを表示したところでなくなってしまうものです。

ページ1で準備された変数$xには、ページ2ではアクセスできません。ページ2それどころか、もう一度、ページ1を表示させようとしても、前にページ1を表示させたときの変数$xには、もうアクセスできないのです。いったんページを表示させたところで、変数$xは削除されているからです。2度目のアクセスで作成される変数$xは、名前は同じでも別の変数として扱われます。

セッションとは?

そこで登場するのが、セッションというしくみです。セッションとは、ざっくりと言ってしまうと、ページを跨って情報を保存するための入れ物です。ユーザーがアプリを利用している問、維持されます。

ページ1でセッ卜したセッション情報は、ページ1を表示したあとも維持され、ページ2でもアクセスできます。例えばi実習のサンプルのように、ウィザード形式の入力フォームではウィザードが完了するまでデータを保存しなければいけませんかう、ポストデータをいちいちセッションに詰め替えているのです。

PHPの歴史


PHP はWebプログラム言語の1つですが、まずはその全体的な概要をみてみましょう。
PHPの生い立ちですが、PHPの最初のバージョンは、 1994年の秋に開発され ました。 1995年に入って一般に公開され、 Personal Home Page Toolsと呼ばれるよ うになりました。この頃のPHPは、ごく簡単なマクロだけを実行できる解析エンジンと、ゲストブックやアクセスカウンタ等のユーティリティから構成されていて、mSQL というデータベースソフトと連携する機能も組み込まれました。その後HTMLのフォームからデータを取り込む Form Interpreterの機能が追加されました。この頃から、 PHPでプログラミ ングをする人が急激に増え、いろいろな人がPHPに機能を追加していくようになり ました。  PHP のプログラムの解析エンジンは、新しく作り直されてPHP3へと進化し、このバージョンから PHP : Hypertext Preprocessorと呼ばれるようになりました。 PHP3 では、有志によって国際化も進められ、日本語処理も行えるようになりました。 そして、 2000 年には、最新バージョンのPHP4 がリリースされました。 PHP4では、解析エンジンとしてZendというものが使われるようになり、 PHP3 に比べ て高速になりました。 日本では日本語対応のこなれ具合から、 PHP3 の最終バージョンを国際化した PHP3.0.18 も多用されています。

任意に繰り返しを止められる「while 文」


繰り返す回数が一定でないループ処理はどう作る?

今月の日付をすべて表示したいときは、どうすれば良いでしょうか。すでに紹介した「for文」を使って1日から月末日までを表示するループ処理を作成すれば良いので、はないかとイメージしているかもしれませんが、繰り返す回数が定ではないので注意が必要です。

好きなタイミングで終了できる構文があれば便利

月末日は一定ではなく、「1日から30日までの0回)」のように繰り返す回数が明確ではありません。そこで、( )の中に「(5回繰り返し)」とループカウンタで回数を指定するのではなく、次のように、「月末日まで続ける」と記述できる構文があれば便利ではないでしょうか。

このように記述できれば便利

処理を繰り返す (月末固まで続ける) {

日付の表示

}

この方法であれば、1日、2日、3日・・・と日付が表示されていき、月末日が30日の月も、31日の月も、月末日になったところで柔軟にループを終了できるというイメージです。