Club86 基礎講義「PHPを使おう」

37
PHP を使おう Club86 Startup School 起業家のためのエンジニア教室 株式会社ゆめみ 中田 11723日土曜日

Transcript of Club86 基礎講義「PHPを使おう」

Page 1: Club86 基礎講義「PHPを使おう」

PHPを使おうClub86 Startup School

起業家のためのエンジニア教室株式会社ゆめみ 中田 稔

11年7月23日土曜日

Page 2: Club86 基礎講義「PHPを使おう」

PHPを使おう• PHPとは?

•変数とデータ型、関数

•制御構造

•処理とアルゴリズム

• CakePHPの基本ルール

11年7月23日土曜日

Page 3: Club86 基礎講義「PHPを使おう」

PHPとは?

11年7月23日土曜日

Page 4: Club86 基礎講義「PHPを使おう」

PHP?

•サーバ側で動作するプログラミング言語の1つ

• Webページを生成することを目的に作られた

→ Webページの扱いに向いている

PHP = PHP: HyperText Preprocessor

ハイパーテキスト(HTML文書)を前処理するもの

11年7月23日土曜日

Page 5: Club86 基礎講義「PHPを使おう」

PHPとWebサーバの連携

Webサーバ

PHP

ブラウザから要求を受ける

PHPファイルであればPHPに処理を要求

PHPファイルを実行する

出力内容をWebサーバに返す

PHPからの結果をブラウザに返す

PHPファイル

11年7月23日土曜日

Page 6: Club86 基礎講義「PHPを使おう」

PHPとWebサーバの連携

Webサーバ

PHP

ブラウザから要求を受ける

PHPファイルであればPHPに処理を要求

PHPファイルを実行する

出力内容をWebサーバに返す

PHPからの結果をブラウザに返す

PHPファイル

PHPとPHPファイル?

11年7月23日土曜日

Page 7: Club86 基礎講義「PHPを使おう」

PHPの動作

PHP

PHP言語でソースコードを書く(PHPファイル)

PHPというプログラムがソースコードを読んで実行(通訳者)

何かを出力する(多くの場合はHTMLを出力する)

11年7月23日土曜日

Page 8: Club86 基礎講義「PHPを使おう」

プログラム?

• プログラム• コンピュータが理解できる命令書

• プログラミング言語• 命令書を書くための人工言語

• ソースコード• プログラミング言語で書かれた人間が理解できる命令書

プログラム = コンピュータに対する命令書

補足

11年7月23日土曜日

Page 9: Club86 基礎講義「PHPを使おう」

1. ソースコードを書く

2.命令書を翻訳する

3.翻訳済の命令書に従って実行する

コンパイラとインタプリタコンパイラ型言語コンパイラ = 翻訳者

インタプリタ型言語インタプリタ = 通訳者

1. ソースコードを書く

2.毎回命令書を通訳しながら実行する

速い・面倒 遅い・楽

C、C++、Objective-C、Java、C#等

PHP、Perl、Ruby、Python、JavaScript等

補足

11年7月23日土曜日

Page 10: Club86 基礎講義「PHPを使おう」

PHPコード

• <?php ... ?> で囲まれた部分がPHPで実行される

•それ以外はそのままスルーして出力される<h1>こんばんは、<?php echo "中田"; ?>です。</h1>

<h1>こんばんは、中田です。</h1>

11年7月23日土曜日

Page 11: Club86 基礎講義「PHPを使おう」

変数とデータ型、関数

11年7月23日土曜日

Page 12: Club86 基礎講義「PHPを使おう」

変数

•名前のルール• $から始まる

• 1文字目は a-z, A-Z, _

• 2文字目以降は a-z, A-Z, 0-9, _

変数 = 値を入れる箱(入れ物)

$a

11年7月23日土曜日

Page 13: Club86 基礎講義「PHPを使おう」

データ型データには幾つかの種類(型)がある

•論理型(boolean)

真偽値を表現する

•整数型(integer)、浮動小数点数型(float)

数値を表現する

•文字列型(string)

文字を表現する

$a = true;$b = false;

$a = 10;$b = 1.5;

$a = "ABC";$b = '中田';

11年7月23日土曜日

Page 14: Club86 基礎講義「PHPを使おう」

データ型

•配列型(array)

索引が付られた値の集合

key => value の形式

keyが省略された場合、0, 1, 2, ... となる

$a = array("中田", 35, "(株)ゆめみ");echo $a[2]; // (株)ゆめみ が出力される

$b = array(! "name" => "中田",! "age" => 35,! "company" => "(株)ゆめみ");echo $b["name"]; // 中田 が出力される

11年7月23日土曜日

Page 15: Club86 基礎講義「PHPを使おう」

関数

y = f(x)数学での関数

xが決まればyが定まるような式

三角関数 cos θ = b/h

cos(π/4) = √2/2

関数 = 値を渡すと結果が返る

11年7月23日土曜日

Page 16: Club86 基礎講義「PHPを使おう」

関数組み込み関数

その他の関数

PHP側で始めから用意済みリファレンスマニュアルを参照

拾ってくる or 自力で作るfunction文で定義可能

echo strlen("ABC");echo date("Y/m/d");echo ceil(4.3);

function hello($x) {! return $x."さん、こんにちは";}echo hello("中田");

11年7月23日土曜日

Page 17: Club86 基礎講義「PHPを使おう」

制御構造

11年7月23日土曜日

Page 18: Club86 基礎講義「PHPを使おう」

3つの基本構造ほとんどのプログラミング言語で同じ!

構造化プログラミング

順次実行

分岐

反復

上から順番に命令が実行される

条件の真偽によって処理が分かれる

条件を満たしている間処理を繰り返す11年7月23日土曜日

Page 19: Club86 基礎講義「PHPを使おう」

順次実行

•各命令文(式)はセミコロンで区切られる

$str = "中田";echo $str;

11年7月23日土曜日

Page 20: Club86 基礎講義「PHPを使おう」

分岐

•条件Xが満たされたときAを実行する

•条件Xが満たされたときAを、それ以外のときはBを実行する

•条件Xが満たされたときAを、それ以外で条件Yが満たされたときはBを、それ以外のときはCを実行する

if ( X ) {! A ;}

if 文

if ( X ) {! A ;} else {! B ;}

if ( X ) {! A ;} elseif ( Y ) {! B ;} else {! C ;}

11年7月23日土曜日

Page 21: Club86 基礎講義「PHPを使おう」

分岐

• $aがXのとき、Aを実行する。$aがY

またはZのとき、Bを実行する。$aがどれでもないときは、Cを実行する。

switch ($a) {! case X:! ! A ;! ! break;! case Y:! case Z:! ! B ;! ! break;! default:! ! C ;}

switch 文

break は一番内側の { } を抜ける命令

11年7月23日土曜日

Page 22: Club86 基礎講義「PHPを使おう」

反復

•条件を満たす間、処理を繰り返す

• 0から9まで出力される

• while文とほぼ同じ

•条件判定が最後になる

$i = 0;while ($i < 10) {! echo $i;! $i++;}

while 文

$i = 0;do {! echo $i;! $i++;} while ($i < 10);

do while 文

11年7月23日土曜日

Page 23: Club86 基礎講義「PHPを使おう」

反復

•初期化、反復条件、反復時の処理がセットになったもの

•配列の要素を順番に繰り返す

for ($i = 0; $i < 10; $i++) {! echo $i;}

for 文

foreach 文$data = array("A", "B", "C");foreach ($data as $d) {! echo $d;}

11年7月23日土曜日

Page 24: Club86 基礎講義「PHPを使おう」

処理とアルゴリズム

11年7月23日土曜日

Page 25: Club86 基礎講義「PHPを使おう」

カレンダーを作る

•やりたい処理を言葉で表現する

•より細かい単位に分解していく

•順次、分岐、反復の3構造にまで分解する

•できたアルゴリズムをPHPで表現する

アルゴリズムを考える

コードを書く

11年7月23日土曜日

Page 26: Club86 基礎講義「PHPを使おう」

カレンダーのアルゴリズム

•全体をテーブルで表現する

•一週間の曜日を表示する

•日の一覧を一週間ずつ区切って表示する

•土曜は青、日曜は赤、今日は背景を変える

11年7月23日土曜日

Page 27: Club86 基礎講義「PHPを使おう」

アルゴリズムを考える

•日曜から土曜までの文字列を用意

• tr開始タグを表示する

•曜日数分繰り返す

• td開始タグを表示する

• 0番目は赤、6番目は青、それ以外は黒で曜日を表示する

一週間の曜日を表示

11年7月23日土曜日

Page 28: Club86 基礎講義「PHPを使おう」

アルゴリズムを考える• 月の初日の曜日を取得する

• 初日の曜日が日曜でない場合

• tr開始タグを表示する

• その曜日になるまでtdの空タグを表示する• 月の日数分繰り返す

• 日曜ならtr開始タグを表示する

• td開始タグを表示する(当日なら背景色指定)

• 日曜なら赤、土曜なら青、その他なら黒で日を表示する• td終了タグを表示する

• 土曜ならtr終了タグを表示する

• 最終日の曜日が土曜でない場合

• 土曜になるまでtdの空タグを表示する• tr終了タグを表示する

日の一覧を表示

11年7月23日土曜日

Page 29: Club86 基礎講義「PHPを使おう」

アルゴリズムをコードに

$week = array("日", "月", "火", "水", "木", "金", "土");echo "<tr>";for ($i = 0; $i < count($week); $i++) {! echo "<td>";! switch ($i) {! ! case 0:! ! ! echo '<font color="red">'.$week[$i].'</font>';! ! ! break;! ! case 6:! ! ! echo '<font color="blue">'.$week[$i].'</font>';! ! ! break;! ! default:! ! ! echo $week[$i];! }! echo "</td>";}echo "</tr>";

一週間の曜日を表示

11年7月23日土曜日

Page 30: Club86 基礎講義「PHPを使おう」

アルゴリズムをコードに

$wnum = date('w', mktime(0, 0, 0, date('m'), 1, date('Y')));if ($wnum != 0) {! echo '<tr>';! for ($i = 0; $i < $wnum; $i++) {! ! echo '<td> </td>';! }}

日の一覧を表示

序盤の空枠表示部分

11年7月23日土曜日

Page 31: Club86 基礎講義「PHPを使おう」

アルゴリズムをコードに日の一覧を表示 $today = date('d');

$lastday = date('t');for ($i = 1; $i <= $lastday; $i++) {! if ($wnum == 0) {! ! echo '<tr>';! }! if ($i == $today) {! ! echo '<td style="background-color:#ffff00;">';! } else {! ! echo '<td>';! }! switch ($wnum) {! ! case 0:! ! ! echo '<font color="red">'.$i.'</font>';! ! ! break;! ! case 6:! ! ! echo '<font color="blue">'.$i.'</font>';! ! ! break;! ! default:! ! ! echo $i;! }! echo '</td>';! if ($wnum == 6) {! ! echo '</tr>';! }! $wnum = ($wnum + 1) % 7;}

中盤の日付表示部分

11年7月23日土曜日

Page 32: Club86 基礎講義「PHPを使おう」

アルゴリズムをコードに

if ($wnum != 0) {! for ($i = $wnum; $i <= 6; $i++) {! ! echo '<td> </td>';! }! echo '</tr>';}

日の一覧を表示

終盤の空枠表示部分

11年7月23日土曜日

Page 33: Club86 基礎講義「PHPを使おう」

CakePHPの基本ルール

11年7月23日土曜日

Page 34: Club86 基礎講義「PHPを使おう」

URLとの連携ルールhttp://localhost/[プロジェクト名]/

[コントローラ名]/[アクション名]

ファイル名: [コントローラ名]_controller.php クラス名: [コントローラ名]Controller 先頭大文字

ビューのフォルダ名

コントローラ

11年7月23日土曜日

Page 35: Club86 基礎講義「PHPを使おう」

URLとの連携ルールhttp://localhost/[プロジェクト名]/

[コントローラ名]/[アクション名]

コントローラ内の各関数名がアクション名になる

ビューのファイル名(ビュー名)指定がなければ、アクション名=ビュー名

アクション名が省略された場合はindexというアクション名になる

アクション・ビュー

11年7月23日土曜日

Page 36: Club86 基礎講義「PHPを使おう」

DBとの連携ルール

単数形の名前でテーブルの参照が可能

複数形でテーブルを定義しておく

モデル ※モデル定義ファイルは省略可能

11年7月23日土曜日

Page 37: Club86 基礎講義「PHPを使おう」

ややこしいかもしれませんが、基本構造を理解すれば、後は語彙を増やすだけ。

リファレンスマニュアルを参照しながら作って見ましょう!

11年7月23日土曜日