コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor )...

78
PHP入門 コネクト株式会社

Transcript of コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor )...

Page 1: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

PHP入門

コネクト株式会社

Page 2: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 2

アジェンダ

� Webの基礎知識

� 開発環境

� PHPに触れてみよう

� PHPの基本

�変数と型

�演算子

�制御構造と関数

� データのやりとり

� オブジェクト指向

�基礎知識

�抽象クラス

�インターフェイス

� 例外

� データベース

�基礎知識

�SQL

�PDO

� セキュリティ

Page 3: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

Webの基礎知識

これからPHPを学ぶ前に、まずはWebについて復習しましょう。

Page 4: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 4

Webの基礎知識

�Webの仕組み

�クライアントサーバモデルに基づくシステム

・ ウェブブラウザにURLが入力される(もしくは外部リンクがクリックされる)

・ DNSによってURLがIPアドレスに変換され、URIのスキーム に従い接続される

(主にHTTPで接続)

・ ページを構成するファイルが要求元に送られる

・ 受信側(クライアント)は受け取ったファイルにしたがってページを生成し表示を行う

クライアント サーバ

送信

受信

受信

送信

要求

応答

HTTP

Page 5: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 5

Webの基礎知識

� Webアプリケーションとは?

�ウェブの機能や特徴を利用したアプリケーション

�PHPやRubyといったWebサーバ上で動作するスクリプト言語を利用して開発することが多い

�動的にコンテンツを生成

�サーバ~クライアント間をHTTPで通信

具体的には

ブログ、SNS、掲示板、オンラインショップ

WIKI、オークション etc・・・

Page 6: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 6

Webの基礎知識

� 用語解説:HTML

(HyperText Markup Language )� ウェブ上のドキュメントを記述するための

マークアップ言語

� 他のドキュメントへのハイパーリンクを設定できるハイパーテキストで画像・リスト・表などの高度な表現力を持つ

� W3Cによる標準規格であるが、最近では後継規格であるXHTMLへの置き換えが進められている

Page 7: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 7

Webの基礎知識

� 用語解説:PHP

(PHP: Hypertext Preprocessor )� 動的にHTMLデータを生成することが可能

→サーバ~クライアント間でデータの受け渡しを行う

� Apache、IISなどWebサーバ上で動作する

� フレームワークやライブラリが多数存在

� CGI、FastCGI、サーバのモジュールとして動作可能

� イスラエルのZend Technologies社が

コアエンジンを開発

Page 8: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 8

Webの基礎知識

�PHPはスクリプト言語である

�インタプリタ方式�実行する度にオペコード(機械語)に変換

�コンパイル処理が不要�Zend Engineが自動的にコンパイル

�スクリプトをサーバに配置するだけ�Try & Errorが容易

プログラムを作成/変更してから実行するまでの手間がなく

開発者にとって利便性が高い

Page 9: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 9

Webの基礎知識

�用語解説:CGI

�Common Gateway Interfaceの略

�サーバプログラムと外部プログラムとの連携法の取り決め

�様々な言語に対応�PHP/Perl/Java/Python/Ruby/C etc…

※mod_php、mod_perl、Java ServletはCGIとは

仕組みが違う。

Page 10: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 10

Webの基礎知識

�用語解説:HTTP�HyperText Transfer Protocolの略

�Webサーバとクライアントとの間で通信を行う際に用いるプロトコル

�HTML・XMLで記述されたハイパーテクストの転送が主な目的だが、画像・動画など、様々なデータの転送に用いられる

�状態保持の為の機構であるCookieを使用可能

Page 11: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 11

Webの基礎知識

�用語解説:HTTPS�HTTP + “Secure”

�暗号化する事でセキュア(安全)な状態にする

�SSL (Secure Socket Layer)で暗号化

�サーバの認証と通信の暗号化により安全性を確保

�復元のための解析に膨大な時間を要するため、事実上は解析しても徒労に終わる

Page 12: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 12

クライアントサイドスクリプト

�クライアント側動的コンテンツの仕組み

�Java ScriptなどWebブラウザで動作するスクリプト

・ ページ全体は、WebサーバよりWebブラウザに送られる。

・ Java Scriptで記述された部分が操作に応じて動作する

・ 一部のデータをサーバ側にデータを要求するときはajaxで通信を行う。

・ Webページ全体を遷移する場合には、通常のhttpリクエストを送る

Webブラウザ

Java Script

サーバ

送信 受信

要求

応答

ajax

Page 13: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 13

モバイルアプリ

�モバイルの仕組み

�ネイティブアプリとWebサーバの連携

・ ネイティブアプリは、クライアント(スマホ/タブレット)にダウンロードされている。

・ ネイティブアプリが、Webサーバからデータを取り出す際には、httpdリクエストを

送信する。

・ ネイティブアプリは、サーバからのレスポンスを受け取り処理を行う。

ネイティブアプリ サーバ

送信

受信

受信

送信

要求

応答

HTTP

Page 14: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

PHPに触れてみよう

PHPに慣れ親しむためにも、まずは学習の前に実際にPHPを触ってみましょう。

誰でも簡単にプログラミングできる言語だという事を肌で感じて下さい。

Page 15: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 15

PHPに触れてみよう

� 次のスクリプトを実行してみましょう

�Zend Studioのローカルデバッグ機能を使って試してみましょう

� [F5]キーで編集中のスクリプトを実行できます

<?PHP

phpinfo();?>

Page 16: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 16

PHPに触れてみよう

� このような画面になりましたか?

�アウトプット領域上の[HTML]タブをクリックすると、HTMLタグ表示から切り替わります

Page 17: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 17

PHPに触れてみよう

� 次のスクリプトを実行してみましょう

<?PHP

print "こんにちは、世界!";?>

Page 18: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 18

PHPに触れてみよう

� このような画面になりましたか?

�結果が表示されましたか?

Page 19: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 19

PHPに触れてみよう

�まずはプログラムを動かしてみよう!

�プログラムを実行し、結果を見ることが学習の近道です

�全ての機能を憶える必要はありません

�Zend Studioで手軽にPHPを楽しもう!

�デバッグ機能など一般的なエディタにはない便利な機能が充実しています

�ネット環境が無い状態でも学習出来ます

�Let’s enjoy PHP programming!

Page 20: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

PHPの基本

PHPを記述する上で、基本となるルール、文法を学習します

Page 21: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 21

PHPの基本

基本ルール

� 基本ルール�「 <?php 」と「 ?> 」で囲われたブロックがPHP

スクリプトとして認識される

�HTMLファイルの中に埋め込む形でも記述可能

�ファイル保存時に拡張子は 「.php 」とする

<html>

<head><title>step1</title></head><body>

<?php//(ここにPHPのコードを記述します)

print ”hello world ! ”;

?>

</body>

</html>

Page 22: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 22

� コメントの書式

�「//」の後に記述する<?php

//ここにコメントを記述

print ”//この場合は・・・”;

?>

�複数行の場合は「/* ~ */」で囲う<?php

/* 途中で改行を入れても・・・

OK!

*/

?>

PHPの基本

基本ルール

Page 23: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 23

� 演習

�以下のコードを入力し、Zend Studioで実行してみましょう

PHPの基本

基本ルール

<html>

<title>step2</title>

<body>

<table border="1">

<tr>

<?php

print "<td>1+1</td>";

?>

<td>

=

</td>

<td>

<?php print(1+1); ?>

</td>

</tr>

</table>

</body>

</html>

Page 24: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 24

PHPの基本

変数と型

� 変数とは�イメージは・・・

なんでも入れられる便利な「箱」

�実際は・・・

変数を宣言することにより、PCのメモリ上に「値」を保持しするための領域を作る

変数数値

文字列配列

オブジェクト

画像

Page 25: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 25

PHPの基本

変数と型

� 変数の使いかた�「$」ではじめる

�使える文字は英数字、アンダースコアのみ

�頭に数字は使えない

例:

$var ・・・・OK

$var_01 ・・・・OK

$1_var ・・・・NG

Page 26: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 26

PHPの基本

変数と型

� 型の種類�文字列 (string)

�整数 (int)

�浮動小数点 (float)

�論理型 (boolean)

�配列型 (array)

�オブジェクト型 (object)

�リソース型 (resource)

�ヌル型 (null)

※ PHPは型を意識しなくても記述できる言語ですが

型の概念を知っておくことはとても重要です

Page 27: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 27

PHPの基本

変数と型

�文字列型(string)

�文字の集合体を表現する変数

�0文字以上の文字列を格納

$zend = 'zend is PHP company';

$php = 'PHP is ¥'scripting language¥' ';

$name = 'my name is ¥¥zeev suraski¥¥';

�シングルクォートによる記述

�エスケープできるのは引用符と「¥」マークのみ

Page 28: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 28

PHPの基本

変数と型

$a = "a¥n¥tb¥n¥t¥tc";

$b = "$a¥nd";

�ダブルクォートによる記述

� エスケープシーケンスが利用可能

� 変数が有効になる

�ヒアドキュメントによる記述

� 「<<<EOD」~「EOD」までの間を文字列として認識

$str = <<<EOD

これが

ヒアドキュメント

です

EOD;

\n 改行

\r 復行

\t 水平タブ

\\ 円マーク

\$ ドル記号

\" 二重引用符

エスケープシークエンス一覧

Page 29: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 29

PHPの基本

変数と型

�整数型(int)

�32ビット符号付き整数を表現する変数代入可能な値: -2147483648~2147483647

$a = 100;// 10進数

$a = 0765;// 8進数・・・0を付けると8進数として扱われる

$a = 0xff;// 16進数・・・0xを付けると16進数として扱われる

$a = 2147483647; //+1して下記実行結果の変化を見る

var_dump($a);

Page 30: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 30

PHPの基本

変数と型

�浮動小数点型(float)

�次のケースで使用する

�整数の上限以上の値

�小数点以下の値を扱う時

$a = 1.2;

$a = 1.2e3;// 1.2 x 1000

$a = 1.2e-3;// 1.2 x 0.001

Page 31: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 31

PHPの基本

変数と型

� 配列型(array)�配列とは・・・

�複数の値を持つことが出来る変数

�値にユニークなインデックスを付けることができる

�イメージとしては・・・

配列

このようなスプレッドシートのデータ構造をそのまま格納することができる

Page 32: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 32

PHPの基本

変数と型

�実際に値を格納してみましょう

$gv9[] = '柴田';

$gv9[] = '土井';

$gv9[] = '王';

$gv9[] = '長嶋';

$gv9[] = '末次';

$gv9[] = '高田';

$gv9[] = '黒江';

$gv9[] = '森';

$gv9[] = '高橋';

print_r($gv9);

変数名[] = 値 変数名 = array(値1,値2,・・・)

$gv9 = array('柴田' ,'土井' ,'王',

'長嶋','末次','高田','黒江','森','高橋');

print_r($gv9);

Page 33: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 33

PHPの基本

変数と型

�連想配列

�「キー」に文字列を指定したもの

$gv9['中'] = '柴田';

$gv9['二'] = '土井';

$gv9['一'] = '王';

$gv9['三'] = '長嶋';

$gv9['右'] = '末次';

$gv9['左'] = '高田';

$gv9['遊'] = '黒江';

$gv9['捕'] = '森';

$gv9['投'] = '高橋';

print_r($gv9);

変数名[キー] = 値 変数名 = array(キー =>値1,・・)

$gv9 = array(

'中' => '柴田', '二' => '土井', '一' => '王',

'三' => '長嶋', '右' => '末次', '左' => '高田',

'遊' => '黒江', '捕' => '森', '投' => '高橋'

);

print_r($gv9);

Page 34: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 34

PHPの基本

変数と型

�論理型(boolean)

�真偽を表現する型

�TRUE: 真

�FALSE: 偽

�比較演算子の結果は全て論理型$a = true;

print $a . "¥n";

var_dump($a);

$a = false;

print $a . "¥n";

var_dump($a);

Page 35: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 35

PHPの基本

変数と型

�オブジェクト型(object)

�クラスのインスタンス(実態)�クラス�オブジェクトの設計図

�クラスで定義したメソッドを使える�メソッド�クラスに紐付いた関数

�メンバ変数を持てる

�メンバ変数�オブジェクトの中に格納されている変数

Page 36: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 36

PHPの基本

変数と型

�リソース型(resource)

�外部リソース(情報資源)への参照を保持する特殊な変数

�他の型からの変換は不可能

�ファイル/ディレクトリ

�データベース(接続, ステートメント, etc…)

�グラフィック(GD, ImageMagik, etc…)

$fp = fopen("test.txt", "r");

var_dump($fp);

fclose($fp);

Page 37: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 37

PHPの基本

変数と型

�ヌル型(Null)

�値が何も無いことを示す特殊な変数

�以下の場合にNullと見なされる

�「Null」が代入されている場合(下記サンプル参照)

�値が何も無い場合

�変数が存在しない場合

�unset()関数で変数が破棄されている場合

$var = null;

var_dump($var);

Page 38: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 38

PHPの基本

演算子

�演算子

�演算子の種類

�代数演算子

�代入演算子

�比較演算子

�加算子/減算子

�文字列演算子

Page 39: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 39

PHPの基本

演算子

� 算術演算子

�数値を足したり引いたりするための演算子

�優先順位も含め算数と全く同じ

例 説明 詳細

-$a 負にする $aの符号を反転したもの

$a + $b 加算 $aと$bの和

$a - $b 減算 $aと$bの差

$a * $b 乗算 $aおよび$bの積

$a / $b 除算 $aおよび$bの商

$a % $b 乗余 $aを$bで割った余り

Page 40: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 40

PHPの基本

演算子

� 算術演算子

�演習:変数に値を代入し、計算してみましょう

�値、演算子を変更して演算結果を確認しましょう

$a = 1;

$b = 2;

print ($a - $b);

Page 41: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 41

PHPの基本

演算子

� 代入演算子

� 変数に値若しくは演算結果を代入する演算子

例 説明

$a = 3; $aに3を代入

$a += 5; $aに5を加算

$b="Hello"; $bに文字列を代入

$a = 10;

$a += 2;

print ($a);

Page 42: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 42

PHPの基本

演算子

� 比較演算子

�2つの値を比較する演算子。演算結果はboolean。

例 説明 詳細

$a == $b 等しい

$a === $b 等しい 型比較も行う

$a != $b 等しくない

$a <> $b 等しくない ($a!=$bを推奨)

$a !== $b 等しくない 型比較も行う

$a = 1;

$b = 2;

var_dump($a===$b);

Page 43: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 43

PHPの基本

演算子

� 比較演算子(続き)

�2つの値を比較する演算子。演算結果はboolean。

例 説明

$a < $b より少ない

$a > $b より多い

$a <= $b より少ないか等しい

$a >= $b より多いか等しい

$a = 1;

$b = 1;

var_dump($a<=$b);

Page 44: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 44

PHPの基本

演算子

� 加算子・減算子

�値を+1または-1する演算子。

例 説明 詳細

++$a 前置加算子

参照前に$aを+1

$a++ 後置加算子

参照後に$aを+1

--$a 前置減算子

参照前に$aを-1

$a-- 後置減算子

参照後に$aを-1

<?php

$a = $b = 1;

print ++$a;

print "¥n";

print $a;

print "¥n";

print $b++;

print "¥n";

print $b;

print "¥n";

?>

Page 45: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 45

PHPの基本

演算子

� 文字列演算子

�文字列同士を結合する演算子。

例 説明 詳細

$b = $a . ",There!"; 結合演算子 「.」 によって文字列を結合する

$b .= "There!"; 結合代入演算子 左辺の値に文字列を結合する

$a = "Hello";

$b = $a . ",There!";

print $b;

Page 46: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 46

PHPの基本

演算子

� 論理演算子

�複数の条件式を論理的に結合する演算子です

例 説明 詳細

&& 論理積 双方がTRUEの場合にTRUEを返す

|| ( or ) 論理和 いずれかがTRUEの場合にTRUEを返す

xor 排他的論理和 いずれかがTRUEでかつ双方ともTRUEでない場合にTRUEを返す

! 否定 式がFALSEである場合にTRUEを返す

$a = true;

$b = false;

var_dump($a xor $b);

Page 47: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 47

PHPの基本

定数

define("HOSTNAME", "ZEND1");

define("HOSTNAME", "ZEND2");

print (HOSTNAME);

� 定数�不変の値を保持する

�再定義はできない

�使える文字は英数字、アンダースコアのみ

�スコープ(後述)規則がない

�配列は格納できない

Page 48: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 48

PHPの基本

定数

� マジック定数�自動的に定義される定数

�使われ方によって値は変化する

名前 説明

__LINE__ 実行中の行番号

__FILE__ 実行中ファイルのフルパスとファイル名

__FUNCTION__ 関数名

__CLASS__ クラス名

__METHOD__ クラスのメソッド名

Page 49: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 49

PHPの基本

制御構造と関数

�制御構造とは…

�プログラムの流れを制御するもの

�制御構造の種類�順次構造

�上から順に処理を行う構造

�選択構造�式の結果に応じて処理を分岐する構造

�反復構造�式の結果に応じて処理を繰り返す構造

Page 50: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 50

PHPの基本

制御構造と関数� if

�条件に一致した際(TRUEの場合)、処理を実行します

$a = 1;

if( $a == 1 ){

print '$aには1が代入されています';

}

if ( 条件式 ) {処理

}

Page 51: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 51

PHPの基本

制御構造と関数� else

�条件に一致しない場合(FALSE)、処理2を実行します

$a = 1;

if( $a >= 10 ){

print '$aは10以上です';

}else{

print '$aは9以下です';

}

if ( 条件式 ) {処理1

} else {

処理2

}

Page 52: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 52

PHPの基本

制御構造と関数� elseif

�条件式1に一致せず(FALSE)、且つ条件式2に一致した場合(TRUE)、処理2を実行します

$a = false;

$b = true;

if($a){

print "Hello";

}elseif($b){

print "bye";

}

if ( 条件式1) {処理1

} elseif( 条件式2){

処理2

}

Page 53: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 53

PHPの基本

制御構造と関数

� while

�条件式の結果が(TRUE)のとき、処理を繰り返します

$i = 1;

while( $i <= 10 ){

echo $i++ . "¥n";

}

while( 条件式 ) {処理

}

Page 54: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 54

PHPの基本

制御構造と関数� do…while

�条件式の結果が真(TRUE)のとき、処理を繰り返します

�処理を実行した後で条件式を評価します

$i = 0;

do{

print ++$i . "¥n";

}

while( $i <= 10 );

do{

処理

while( 条件式 )

Page 55: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 55

PHPの基本

制御構造と関数� for

�開始時の処理を無条件で実行します

�条件式の結果が(true)の時、処理を実行します

�実行後の処理を行い、条件式の結果が(false)になるまでループ処理を継続します

for( $i=1; $i<=10; $i++ ){

echo $i . "¥n";

}

for( 開始時の処理; 条件式; 実行後の処理 ){

処理

}

Page 56: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 56

PHPの基本

制御構造と関数

� foreach

�配列要素に対する反復構造

�配列の要素が$value(任意の名称)に代入されていきます

�二種類の構文があります

$a = array("php", "perl", "java");

foreach($a as $val){

print $val . "¥n";

}

foreach ( 配列 as $value){

処理

}

Page 57: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 57

PHPの基本

制御構造と関数

� foreach (構文)

�連想配列をループ処理する際、非常に有効です

�要素のキーが $key に代入されます

$os = array(

"opensource" => "linux", "ms" => "windows",

"apple" => "osx"

);

foreach( $os as $key => $val ){

print $key. "::" .$val."¥n";

}

foreach ( 配列 as $key => $value){

処理

}

Page 58: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 58

PHPの基本

制御構造と関数

� break

�その時点で反復構造(while, do-while, for, foreach )とswitch(後述)構造を抜けます

for($i = 1; $i < 50; $i++){

if($i == 25){

break;

}

print $i . "¥n";

}

Page 59: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 59

PHPの基本

制御構造と関数

� continue

�反復構造の残りの処理をスキップし、次の処理を実行します

$i = 0;

while($i < 10){

$i++;

if($i == 5){

continue;

}

print "$i" . "¥n";

}

Page 60: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 60

PHPの基本

制御構造と関数� switch

�一つの変数を複数の値と比較し、それぞれ異なる処理を行わせる制御構造

$a = 1;

switch( $a ){

case 0:

print 'very good';

break;

case 1:

print 'good';

break;

case 2:

print 'not bad';

break;

default:

print '...';

}

switch ( 条件式 ) {case a :

処理 a

break;

case b :

処理 b

break;

default :

処理

}

Page 61: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 61

PHPの基本

制御構造と関数

� return

�スクリプトの実行を中止します

print "a¥n";

print "b¥n";

return;

print "c¥n";

Page 62: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 62

PHPの基本

制御構造と関数

� include・require

�PHPスクリプトを読み込みます

// foo.phpが無いとwarningになります

include "foo.php";

// bar.phpが無いとFATAL ERRORになります

require "bar.php";

Page 63: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 63

PHPの基本

制御構造と関数

� include_once・require_once

�1度だけPHPスクリプトを読み込みます

�2度目に実行しても再度読み込みは行いません

// foo.phpが無いとwarningになります

Include_once "foo.php";

// bar.phpが無いとFATAL ERRORになります

require_once "bar.php";

Page 64: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 64

PHPの基本

制御構造と関数

�関数とは…

�処理を一まとめにしたもの

�2種類の関数が存在する

�ビルトイン関数

PHPにデフォルトで組み込まれている定義済みの関数

�ユーザ定義関数

ユーザ自身が定義する関数

Page 65: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 65

PHPの基本

制御構造と関数

� ビルトイン関数

�DB接続や文字列操作など多種にわたる関数が存在

�例

�文字列操作�strcmp, strstr, strcat, strlen, etc…

�DB操作�pg_connect, mysql_query, db2_prepare, etc…

�1000以上存在します

http://php.benscom.com/manual/ja/indexes.php#index.functions

Page 66: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 66

PHPの基本

制御構造と関数� ユーザ定義関数

� 「function」命令を使用して定義を行う

� 関数名の命名規則は変数と同じ

� 引数とは

�関数に渡す値 ⇒ 処理を行ってほしい対象

� 戻り値とは

�関数で処理を行った結果を自動的に返したもの

function 関数名 (引数) {

処理(戻り値)

}

Page 67: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 67

PHPの基本

制御構造と関数

� ユーザ定義関数

�まずは簡単な関数を定義してみましょう

�定義した関数を実行してみましょう

function foo(){

print 'こんにちは';

}

foo();

Page 68: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 68

PHPの基本

制御構造と関数

� ユーザ定義関数

�引数と戻り値のある関数を定義してみましょう

�定義した関数を実行してみましょう

function sale($teika){

$urine = $teika * 0.7;

return $urine;

}

print "3割引!!¥t". sale(1500) . "円";

Page 69: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 69

PHPの基本

制御構造と関数

� スコープ( 変数の有効範囲 )�関数内にある変数 � ローカル変数

�関数外にある変数 � グローバル変数

�2種類の変数は全く別の世界に存在する

$a = 1;

function hoge(){

$a;

print ($a + 1);

}

hoge();

ローカル変数の有効なエリア

グローバル変数の有効なエリア

Page 70: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 70

PHPの基本

制御構造と関数

� スコープ( 変数の有効範囲 )

�グローバル宣言することで、ローカル変数をグローバル変数として扱うことが可能

$a = 1;

function hoge(){

global $a;

print ($a + 1);

}

hoge();

Page 71: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

データのやりとり

サーバ-クライアント間のデータのやり取りの手順を簡単なプログラムを作成しながら学びます。

Page 72: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 72

データのやりとり

� 入力フォーム

�WebアプリケーションではHTMLのフォームによるデータのやりとりが非常に多く見られます

クライアント側 サーバ側

apache

PHP

① ブラウザの入力フォームに入力された値はHTTPプロトコルによってサーバに送信される。

② サーバ側では値をPHPにより受け取り、ロジカルな処理を行う。

③ PHPスクリプトの実行結果がクライアントに送られ、ユーザのブラウザ表示に反映される。

Page 73: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 73

データのやりとり

<html>

<body>

<form action="post.php" method="post">

<table border = "1">

<tr>

<td>名前</td>

<td><input type="text" name="name"></td>

</tr>

<tr>

<td colspan="2" align="center">

<input type="submit" value="送信"></td>

</tr>

</form>

</table>

</body>

</html>

� 実際にプログラムを作ってみましょう

�まず簡単な入力フォームを作成します( .htmlで保存 )

Page 74: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 74

データのやりとり

� データを受け取り、処理を行う

� htmlの <form>タグのmethod属性を「post」で指定した場合、PHPではスーパーグローバル変数(詳細は後述) $_POST で受け取ることが出来る

� フォームで送信した値は<input>タグのname属性で指定した名称をキーとした$_POSTの連想配列に格納される

� PHPスクリプトを作成し、実際にアウトプットを表示してみましょう

<?php

$name = $_POST['name'];

print "名前を受け取りました" . "<br />" . "$name";

?>

Page 75: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 75

データのやりとり

� スーパーグローバル変数

�PHPスクリプトにアクセスした時点で自動的に定義される変数

�関数内であってもアクセス可能

�値は連想配列として格納される

�$_POSTもスーパーグローバル変数のひとつ

Page 76: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 76

データのやりとり

� $_POST�フォームからHTTP POST(HTTPのリクエス

ト)で送信された値が格納されます

<input type="text” name="hoge" > $_POST['hoge']

HTMLフォーム

ブラウザ 送信ボタンを押すとサーバにデータが

送信され、$_POSTに連想配列として

格納される

Page 77: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 77

データのやりとり

� $_GET�フォームからHTTP GET(HTTPのリクエスト)

で送信された値が格納されます

<input type="text” name="hoge" >

$_GET['hoge']

HTMLフォーム

ブラウザ送信ボタンを押すとURLに「クエリ」という

形でデータを付け加えて送信される

$_POST同様に連想配列として格納される

ブラウザのアドレスバー

クエリ

Page 78: コネクト株式会社 - i5php.jp · 用語解説:PHP (PHP: Hypertext Preprocessor ) 動的にHTMLデータを生成することが可能 →サーバ~クライアント間でデータの受け渡しを行う

# 78

データのやりとり

� スーパーグローバル変数一覧

変数名 説明

$_GET HTTP GETによりクエリ情報「?キー名=値」として渡された情報

$_POST HTTP POSTによりHTMLフォームから渡された情報

$_COOKIE HTTP Cookieによりスクリプトに入力された情報

$_REQUEST $_GET,$_POST,$COOKIE,$_FILESの値をまとめて管理

$_FILE アップロードされたファイルに関する情報

$_SESSION スクリプトのセッションに現在登録されている変数

$_SERVER Webサーバーや実行環境に関係する情報を格納した変数

$_ENV 環境変数に関しての情報