More Related Content
Similar to PHP超入門@LL温泉 (20)
More from Sotaro Karasawa
More from Sotaro Karasawa (20)
PHP超入門@LL温泉
- 2. アジェンダ
• PHPとは
• PHPの学び方
• PHP超入門
• 参考資料
Copyright © 2008 Sotaro KARASAWA.
- 3. PHPとは
Copyright © 2008 Sotaro KARASAWA.
- 5. PHPの紹介
• PHP: Hypertext Processor
• http://www.php.net/
• ほとんどウェブのために存在しているプログラミ
ング言語
Copyright © 2008 Sotaro KARASAWA.
- 6. PHPを使うと良いところ・悪いところ
• PHPのよさ
– カンタン
• 覚えやすい
• 1ページだけのちょいプログラムから、大規模フレー
ムワークを使った開発まで
– カンタンに記述可能
– 本格的にやろうとすればできる
– 速い
• ウェブプログラムの実行速度としては他の言語に比
べてすごく速い
– 実績も多く情報も豊富
Copyright © 2008 Sotaro KARASAWA.
- 9. PHPの学び方
Copyright © 2008 Sotaro KARASAWA.
- 12. PHPを学ぶ3つのコツ その2
• マニュアルを極める
– PHPの標準関数の充実さは異常!
– PHPのマニュアルの充実さは異常!
• (m-takagi氏にも大感謝)
– これがあるから、ネットさえあればどこからでも
• HTMLをダウンロードしておけまローカルでも
– 関数名なんて覚える必要ナシ
Copyright © 2008 Sotaro KARASAWA.
- 13. PHPを学ぶ3つのコツ その3
• 注意しなきゃいけない関数だけ覚える
– mb_* 系関数
• 内部エンコード・ソースコードのエンコードに注意
– 脆弱性につながるもの
• htmlspecialchars
• 内部エンコードに注意
– バージョンによって戻り値が違ったり
– その他…
– ハマることによりどんどん覚える
ハマることによりどんどん覚
ることによりどんどん
• 探せば情報もよく出てくる
せば情報もよく出
情報もよく
Copyright © 2008 Sotaro KARASAWA.
- 14. マニュアルの読み方
• 検索
– php.net/mb_strlen
• mb_strlen のマニュアルページにリダイレクトされ
る
• 関数がなければ検索結果が表示される
• 引数・戻り値・サンプルのチェック
Copyright © 2008 Sotaro KARASAWA.
- 15. マニュアルの読み方
• 検索
– php.net/mb_strlen
• mb_strlen のマニュアルページにリダイレクトされ
る
• 関数がなければ検索結果が表示される
• 引数・戻り値・サンプルのチェック
Copyright © 2008 Sotaro KARASAWA.
- 16. PHP超入門
Copyright © 2008 Sotaro KARASAWA.
- 17. PHP超入門
• 基本のキ
• 変数・演算子
• 基本構文
• 配列
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 18. PHP超入門
• 基本のキ
• 変数・演算子
• 配列
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 22. 実行のさせ方
• % php filename.php
<?php
// ここが実装
ここが実装
?>
Copyright © 2008 Sotaro KARASAWA.
- 26. PHP超入門
• 基本のキ
• 変数・演算子
• 配列
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 27. 変数
• 変数に「型」はない
– 自動で決まる
• 変数の頭には $ をつける
• 気にしないとほとんどが文字列扱い
– (文字列の連結はドット「.」)
– int なども連結したりすると勝手に文字列扱い
Copyright © 2008 Sotaro KARASAWA.
- 28. 変数
<?php
$hoge = 1;
$fuga = quot;testquot;;
echo $hoge . quot;¥nquot;;
echo $fuga . quot;¥nquot;;
実行結果
% php 04_var.php
1
test
Copyright © 2008 Sotaro KARASAWA.
- 29. 演算子
• < > <= >=
• == ===
• || &&
Copyright © 2008 Sotaro KARASAWA.
- 30. 厳密な比較
• ==
– 値を比較 (型自動変換)
– quot;12aaaaaquot; == 12 : true
• ===
– 型までチェック
– quot;12aaaaaquot; === 12 : false
Copyright © 2008 Sotaro KARASAWA.
- 31. おまけ。変数の厳密な出力
• var_dump を使う
– 変数の型も出力してくれる
– 配列やオブジェクトもOK
• デバッグには、echoやprintじゃなくてvar_dump
<?php
$hoge = 1;
var_dump($hoge);
実行結果
% php 05_vd.php
int(1)
Copyright © 2008 Sotaro KARASAWA.
- 32. PHP超入門
• 基本のキ
•
• 配列 (超重要)
変数・演算子
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 33. 配列
• 配列
– 初期化にサイズの指定不要
– 型の指定も不要:型はごっちゃまぜOK
– 配列も連想配列(ハッシュ)もごっちゃまぜOK
• 配列の要素へのアクセス
– 添え字を指定
– キー(文字列)を指定
• 配列の初期化
– array();
Copyright © 2008 Sotaro KARASAWA.
- 34. 配列
<?php
$hoge = array(); //初期化
$hoge[0] = 1;
初期化
$hoge[1] = 2;
$hoge['key'] = quot;valuequot;; // 連想配列
var_dump($hoge);
Copyright © 2008 Sotaro KARASAWA.
- 35. 配列
<?php
$hoge = array(); //初期化
$hoge[0] = 1;
初期化
$hoge[1] = 2;
$hoge['key'] = quot;valuequot;; // 連想配列
var_dump($hoge);
実行結果
% php 06_array.php
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[quot;keyquot;]=>
string(5) quot;valuequot;
} Copyright © 2008 Sotaro KARASAWA.
- 36. 配列
<?php
// 初期化時に代入の例
// これは先ほどの配列と同じ
初期化時に代入の
$hoge = array(
これは先ほどの配列 配列と
0 => 1, // 配列の添え字 => 値 という風に表現
1 => 2,
配列の という風
'key' => quot;valuequot;,
);
Copyright © 2008 Sotaro KARASAWA.
- 38. PHP超入門
• 基本のキ
• 変数・演算子
• 配列
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 39. 基本構文
• if else elseif
• while
• do-while
• for
• foreach
• switch case
• break continue
• require require_once
• include include_once
Copyright © 2008 Sotaro KARASAWA.
- 40. 基本構文
• if else elseif
• while
• do-while
• for
• foreach
• switch case
• break continue
• require require_once
• include include_once
Copyright © 2008 Sotaro KARASAWA.
- 42. foreach の使い方
foreach ($array as $val) {
// なにかしらの処理
}
または
foreach ($array as $key => $val) {
// なにかしらの処理
}
Copyright © 2008 Sotaro KARASAWA.
- 43. foreach
<?php
$array = array(
0 => 1,
1 => 2,
'key' => quot;valuequot;,
);
foreach ($array as $val) {
echo $val . quot;¥nquot;;
}
Copyright © 2008 Sotaro KARASAWA.
- 44. foreach
<?php
$array = array(
0 => 1,
1 => 2,
'key' => quot;valuequot;,
);
foreach ($array as $val) {
echo $val . quot;¥nquot;;
}
実行結果
% php 07_foreach.php
1
2
value Copyright © 2008 Sotaro KARASAWA.
- 45. foreach (keyも使う)
<?php
$array = array(
0 => 1,
1 => 2,
'key' => quot;valuequot;,
);
foreach ($array as $key => $val) {
echo $key . quot; => quot; . $val . quot;¥nquot;;
}
実行結果
% php 08_foreach.php
0 => 1
1 => 2
key => value Copyright © 2008 Sotaro KARASAWA.
- 46. foreach (イテレーター)
• Iterator Interface を実装したクラスなら foreach
できる
– 実装しないといけないメソッド
• next
• valid
• current
• rewind
• key
Copyright © 2008 Sotaro KARASAWA.
- 50. include
<?php
include '09_foreach.php';
echo quot;end¥nquot;;
実行結果
% php 10_include.php
PHP Warning: include(09_foreach.php): failed to open stream: No
such file or directory in /home/sotaro/php/LLOnsen/10_include.php on
line 3
Warning: include(09_foreach.php): failed to open stream: No such
file or directory in /home/sotaro/php/LLOnsen/10_include.php on line
3
PHP Warning: include(): Failed opening '09_foreach.php' for
inclusion (include_path='.:/usr/share/pear:/usr/share/php') in
/home/sotaro/php/LLOnsen/10_include.php on line 3
Warning: include(): Failed opening '09_foreach.php' for inclusion
(include_path='.:/usr/share/pear:/usr/share/php') in
/home/sotaro/php/LLOnsen/10_include.php on line 3
end
Copyright © 2008 Sotaro KARASAWA.
- 51. include
<?php
require '09_foreach.php';
echo quot;end¥nquot;;
実行結果
% php 11_require.php
PHP Warning: require(09_foreach.php): failed to open stream: No
such file or directory in /home/sotaro/php/LLOnsen/11_require.php on
line 3
Warning: require(09_foreach.php): failed to open stream: No such
file or directory in /home/sotaro/php/LLOnsen/11_require.php on line
3
PHP Fatal error: require(): Failed opening required
'09_foreach.php' (include_path='.:/usr/share/pear:/usr/share/php')
in /home/sotaro/php/LLOnsen/11_require.php on line 3
Fatal error: require(): Failed opening required '09_foreach.php'
(include_path='.:/usr/share/pear:/usr/share/php') in
/home/sotaro/php/LLOnsen/11_require.php on line 3
Copyright © 2008 Sotaro KARASAWA.
- 54. PHP超入門
• 基本のキ
• 変数・演算子
• 配列
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 55. 関数
function 関数名 (引数1 [, 引数2 …] ) {
// 実装
}
で定義。
関数名(引数 …);
でコール
Copyright © 2008 Sotaro KARASAWA.
- 57. 関数
<?php
function greeting($name) {
echo quot;Hello quot; . $name . quot;¥nquot;;
}
greeting(quot;sotarokquot;);
実行結果
% php 12_function.php
Hello sotarok
Copyright © 2008 Sotaro KARASAWA.
- 58. 関数 return
<?php
function greeting($name) {
return quot;Hello quot; . $name . quot;¥nquot;;
}
echo greeting(quot;sotarokquot;);
実行結果
% php 13_function.php
Hello sotarok
Copyright © 2008 Sotaro KARASAWA.
- 59. 関数 オプション引数
<?php
function greeting($name = quot;suzukiquot;) {
return quot;Hello quot; . $name . quot;¥nquot;;
}
echo greeting();
echo greeting(quot;sotarokquot;);
実行結果
% php 14_function.php
Hello suzuki
Hello sotarok
Copyright © 2008 Sotaro KARASAWA.
- 61. 可変関数
<?php
function greeting($name = quot;suzukiquot;) {
return quot;Hello quot; . $name . quot;¥nquot;;
}
$func = quot;greetingquot;;
echo $func(quot;sotarokquot;);
実行結果
% php 15_function.php
Hello sotarok
Copyright © 2008 Sotaro KARASAWA.
- 62. PHP超入門
• 基本のキ
• 変数・演算子
• 配列
• 基本構文
• 関数
• クラスとオブジェクト指向
Copyright © 2008 Sotaro KARASAWA.
- 63. PHPのオブジェクト指向
• クラス
• 継承
• オーバーロード
• アブストラクトクラス
• インターフェース
• メソッド・プロパティのアクセス権
Copyright © 2008 Sotaro KARASAWA.
- 64. クラスの作り方
<?php
class Greeting
{
public function hello($name = quot;suzukiquot;)
{
return quot;Hello quot; . $name . quot;¥nquot;;
}
}
Copyright © 2008 Sotaro KARASAWA.
- 65. クラスの使い方
<?php
class Greeting
{
public function hello($name = quot;suzukiquot;)
{
return quot;Hello quot; . $name . quot;¥nquot;;
}
}
<?php
$obj = new Greeting();
echo $obj->hello();
Copyright © 2008 Sotaro KARASAWA.
- 66. コンストラクタ/デストラクタ
<?php
class Greeting
{
public function __construct()
{
echo quot;object create!¥nquot;;
}
public function hello($name = quot;suzukiquot;)
{
return quot;Hello quot; . $name . quot;¥nquot;;
}
}
Copyright © 2008 Sotaro KARASAWA.
- 67. 継承・オーバーライド
<?php
class Hello extends Greeting
{
public function hello($name = quot;suzukiquot;)
{
return quot;How are you quot; . $name . quot; ?¥nquot;;
}
}
Copyright © 2008 Sotaro KARASAWA.
- 69. 参考資料
Copyright © 2008 Sotaro KARASAWA.
- 70. 参考資料 (1) まずはここをチェック
• PHP マニュアル
– http://www.php.net/manual/ja/
• 日本PHPユーザー会
– http://www.php.gr.jp/
– あまり情報は豊富ではない(ぉ
Copyright © 2008 Sotaro KARASAWA.
- 71. 参考資料 (2) 本がほしいなら
• はじめてのPHPプログラミング 基本編
– 著:下岡 秀幸、 中村 悟
– 出版:秀和システム
• ノン・プログラマのためのPHP入門 10日間コース
– (とはいえ、実務向け)
– 著:アシアル(株)、海原 才人 、笹亀 弘
– 出版:翔泳社
Copyright © 2008 Sotaro KARASAWA.
- 72. 参考資料 (3) 勉強会やコミュニティへ参加
• events.php.gr.jp
– http://events.php.gr.jp/
– PHPユーザー会が運営しているPHP関連のイベン
– PHP勉強会(毎月)や各フレームワークの勉強会も
ト情報サイト
• PHPカンファレンス
– 毎年7~8月ごろ開催
• IRC
– %PHPStudy (wide)
Copyright © 2008 Sotaro KARASAWA.
- 73. 参考資料 (4) アンテナを伸ばす
• ブログをチェック
– PHPユーザー会の planet (http://planet.php.gr.jp/)
– PHPユーザーのいろいろな人のブログがある
• 雑誌のコラムなど
– 最新の情報がいろいろと載っている
– WEB+DB Pressなど
• 身近なPHPユーザーをTwitterやWassrでフォロー
Copyright © 2008 Sotaro KARASAWA.