2009 php初心者
DESCRIPTION
PHPカンファレンス2009の初心者セッション。有限会社アリウープ柏岡秀男TRANSCRIPT
~ PHP初心者講座~ WEB業界で生き抜くため
に
有限会社アリウープ 代表取締役 柏岡 秀男
アジェンダ
• PHPの仕組み• 簡単なサンプル解説• Smarty
PHPの基本
PHPとは?
• HTML埋め込み型スクリプト言語• サーバサードスクリプト• <? PHP ?>の開始、終了タグにより
PHPモードに入る
簡単なサンプル<html>
<head> <title>サンプル </title> </head> <body>
<?php echo “PHPスクリプトです "; ?>
</body></html>
PHPの動作
HTTP リクエスト
こんにちは
サーバーレスポンス
<HTML>
<?php
echo “ ”こんにちは ;
?>
</HTML>
スクリプトのロード
<HTML>
こんにちは
</HTML>
スクリプトの解析
JavaScriptの動作
HTTP リクエスト
こんにちは
サーバーレスポンス
<HTML>
<script type="text/javascript">
こんにち……は
Javascriptがロードされる
何が得意で、何が苦手か
得意その1HTMLとの親和性が高い。
<html>
<body>
<?php echo “Hello World” ?>
</body>
</html>
何が得意で、何が苦手か
得意その2Webに関連ある関数が豊富。
setcookie関数header関数mail関数image関数XML関数ネットワーク関数
実際に出来ることは?
• クッキーを使って訪問回数をしらせたり、ユーザ独自のページ
• mail関数で問い合わせフォームから直接メール送信
• 時間の比較とインクルードを使って、アクセス時間によって全体が変わるサイト
• ……ショッピングカート• http://alleyoop.jp
何が得意で、何が苦手か
• サンプル(接続元表示)
<html>
<body>
<?php
echo “ ” あなたは . gethostbyaddr($_SERVER[‘REMOTE_ADDR’]) . “からのアクセスで
”すね。 ;
?>
</body>
</html>
何が得意で、何が苦手か
• サンプル(ファイル読み込み)
<html>
<body>
<?php
include(“test.html”);
?>
メインコンテンツ
</body>
</html>
何が得意で、何が苦手か
苦手その1• サーバに通信してもらわないと仕事が出来ない。–JavascriptやActionScriptとの併用
– Ajaxも結局はサーバと通信している
何が苦手?
苦手その1• アクションがあるたび PHPファイルを読み込んでもらわないと仕事が出来ない。–JavascriptやActionScriptとの併用
–ここらへんWEB2.0 ……とか言われてたり– Ajax使うとちょっと違う
何が得意で、何が苦手か
• 苦手その2• PHPが使えるサーバが無いと動かない。–Javascript等はブラウザが処理を行う。
– PHPがサーバにインストールされている必要がある
実際使うには
• Linux、MacOS、Windows等多くのOSで動かすことが出来る。
• でも使えるサーバを借りてしまえばいい• サーバー管理の必要無し• 場合によってはDBまで使える• 探せば無料のスペースもある。
インストール
• XAMPP(Windows)• Apache HTTPD 2.0.52
MySQL 4.1.8PHP 5.0.3 + 4.3.10 + PEAR + SwitchMiniPerl 5.8.3mod_ssl 2.0.51Openssl 0.9.7ePHPMyAdmin 2.6.0 pl3,Webalizer 2.01-10Mercury Mail Transport System fur Win32 und NetWare Systems v4.01aFileZilla FTP Server 0.9.4dSQLite 2.8.15ADODB 4.52Zend Optimizer 2.5.7XAMPP Security
XAMPPの特徴
• 一括インストール• PHP4,5の切り替え• 各種管理ツールが付属• http://www.apachefriends.org/en/
index.html
インストール( Unix)
• 大抵のディストリビュータで初めから利用可能
• 個別のオプション等を利用したい場合はソースよりインストール
• http://www.php.net/manual/ja/install.unix.php
より便利に
ライブラリ
• PEAR( PHP Extension and Application Repository ) PHPで書かれたライブラリ
• Ajax,DB,キャッシュ等の機能を提供• PHPのネイティブ関数でも可能であるが、簡略、使いやすくなるものが多い
簡単なプログラムの例
• http://a-shop.biz/phpcon/
• 仕様• ID,PASSの入力欄を持つ• IDは数字2文字• PASSはアルファベット• 上記が正しい場合、 IDとパスワードをメールする
テンプレートシステム
デザインとの連携
• PHPのみでも元々 HTMLとの親和性は高い
• テンプレートシステムを利用することでデザインとプログラムの分離が出来る
Smarty
• Smartyについて–デザインテンプレートシステム–{}でHTMLに埋め込む
• 別のテンプレートシステムでも同様のこと
どのように動作するのか?index.phpindex.tpl PHPのWeb製作では
結構メジャー
ブラウザからのアクセスは
phpファイル
実際のテンプレートファイル
<HTML>
<BODY>
{* 当日表示 *}
{$smarty.now|date_format}
{* 前日表示 *}
{$yesterday|date_format}
</BODY>
</HTML>
Index.tpl
phpで設定された変数
smartyに準備された変数
呼び出す側のphpファイルindex.php
<?php $smarty = new Smarty;$smarty->assign('yesterday', strtotime('-1 day'));$smarty->display('index.tpl'); ?>
呼び出される側
• Index.tpl
本日の日付は、 {$date} です。
Smartyの便利なところ
• デザインとプログラムを分離できる• できると何がいいか?
UI設計(デザイン決定)
テンプレートを利用しないひとつのファイルに両方の要素がある場合
システム設計(内部使用決定)
デザイン作成HTML作成
出来上がった HTMLをもとにプログラムと組み合わせる
この後手戻りや修正が入るとデザインとシステムでソースが行ったり来たりすることになる
テンプレートを利用した場合
UI設計(デザイン決定)
システム設計(内部使用決定)
デザイン作成
プログラム作成
完成
完成
デザインや修正が入ってもそれぞれが独立して作業出来る。※項目の増減等は両方で作業は必要。
Smartyやテンプレートを利用すると?
Smartyやテンプレートを利用すると
• Web開発特有の作業待ち状態に悩まされなくなる
• 全体として作業効率 UP
• ひいては開発や運用にかかるコスト削減
フレームワーク
• 比較的メジャーなフレームワーク– Ethna – Maple – CakePHP – Symfony– Zend Framework– Phrame
• 一人勝ちなフレームワークは無い?• 使いやすいものを使う
フレームワークの利点
• 毎回、同じようなコードを書かなくてすむ• 提供されている機能によって一定のクオリティが保てる
• XSS,CSRF,SQLインジェクション等の対策• MVCなフレームワークの場合、デザインと機能の分離が出来る
• 開発スピードが上がる
MVC
• Model
• View
• Contloler
• http://ethna.jp/image/ethna-fig1.png
PHPの勉強方法
• マニュアルの読み方http://www.php.net/manual/ja/
• Mlからの情報• SNSのコミュニティ• 空前の勉強会ブーム
必要なスキル
• プログラマとして–サーバの知識–アプリケーションの知識– Webサーバ、 DB– JavaScript–フレームワーク
• NEXTステップ
プラス1デザイン
flash XML
WordPress
PHP W3C
Ajax クラウドCSS