04 filesystem include
-
Upload
- -
Category
Technology
-
view
405 -
download
0
description
Transcript of 04 filesystem include
PHP講座(4)!ファイルシステム操作!ファイルのインクルード
この教材ではPHPならではの機能であるファイル操作について学びます。 また、再利用のためのインクルード機能についても学びます。 この2つを応用していけば、HTMLにはできないことができます。 作業効率も大幅アップ間違い無し!
PHPはファイルを操作できる!
だからなに?
えっ…やってみよう!
ファイルシステム
10.4.18 (C) 株式会社破滅派
2
HTMLやJavascript、Flashにはできません。 サーバサイド言語ならではです。
大前提・ファイルパスについて
10.4.18 (C) 株式会社破滅派
3
URL ex. http://google.co.jp
ファイルシステム ex. (Windows) C:¥xampp¥htdocs (Linux) /var/www/html
PHPから扱う「パス」には二種類あります
相対パス ex. ../../image/a.jpg ./test.html
絶対パス ex. http://ja.wikipedia.org/広辞苑 C:¥xampp¥htdocs¥20100523¥index.html
パスの書き方には二種類あります
参考情報: 相対パスと絶対パスとは http://homepage2.nifty.com/tomoarai/html/pass.html 絶対パスと相対パス http://www14.plala.or.jp/campus-note/vine_linux/others/path.html
ファイルシステムパスはなるべく相対パスで書きましょう。 サーバが変わっても動きます。
ファイルおよびディレクトリの作成、コピー、移動、削除
10.4.18 (C) 株式会社破滅派
4
<?php //現在のディレクトリを取得 $dir= dirname(__FILE__);
//ファイルのパスを作成 $path =$dir.”/file.txt”;
//ファイルの作成 touch($path);
//ファイルのコピー copy($file, $dir.”/copy.txt”);
//ディレクトリの作成 mkdir($dir.”/new”);
//ファイルの移動 rename($file, $dir.”/new/file.txt”);
//ファイルの削除 touch($dir.”/del.txt”); unlink($dir.”/del.txt”);
?>
こんにちは~
こんにちは~
裏側でこっそりアクセスデータを記録しておく
【例えばこんな使い方】
ファイルの情報・中身を操作する
10.4.18 (C) 株式会社破滅派
5
file_exists($path) 指定したファイルが存在するか調べる
is_writable($path) ファイルが書き込み可能か調べる
is_dir($path) 指定したパスがディレクトリか調べる
filesize($path) ファイルの大きさを調べる
filetime($path) ファイルの最終更新日を調べる
file_get_contents($path) ファイルの中身を取得する
file_put_contents($path, $data) ファイルにデータを書き込む
これ記録しといて
はいよー
ユーザーがフォームから送ってきたデータを保存する
【例えばこんな使い方】
ファイルアップロードの仕組み
10.4.18 (C) 株式会社破滅派
6
enctype属性がmultipartになっていないとダメ!
HTMLフォームからファイルをサーバに送信
PHPで一時フォルダのファイルを移動し、保存する
<form method=“post” enctype=“multipart/form-‐data”> <input type=“file” name=“upfile” /> <input type=“submit” value=“アップロード” /> </form>
HTMLの仕事 PHPの仕事
サーバは送信されてきたファイルを一時フォルダに格納する
このままでは削除される
ファイルのインクルード
10.4.18 (C) 株式会社破滅派
7
index.php 【出力結果】 こんにちは<br /> お久しぶり!
読み込まれたファイルは呼び出し元のファイルの一部分であるかのように処理されます。
PHPは他のファイルを読み込むことができます。
greet.php
<?php echo “こんにちは”; include(“greet.php”);
?>
<?php echo “<br />”; echo “お久しぶり!”;
?>
【file_get_contentsとの違いは?】 file_get_contentsはファイルの内容を文字列として取得しますが、includeではファイルの一部として読み込まれます。 <?php ?>で囲まれた部分はそのまま動きます。
ファイル読み込みのよくある例(1)
10.4.18 (C) 株式会社破滅派
8
header.php
category.phpを作ることになっても、ヘッダーやフッターは再利用できる!
Webサイト内で何度も表示するパーツを読み込む
footer.php sidebar.php
contents.php
ヘッダー
サイドバー
フッター
ファイル読み込みのよくある例(2)
10.4.18 (C) 株式会社破滅派
9
ログイン用の機能をlogin.phpに入れることで、コードを何度も書き直さずに済みます。
ログイン機能がある「会員専用サイト」で、認証機能を切り分けて使いまわす。
login.php
bbs.php member.php
index.php
cart.php
<?php //自分で作った関数 function is_user_login(){
return true; }
if(is_user_login()){ //ログイン済みの時
}else{ //ログインしていないときの処理
} ?>
読み込み方法の違い
10.4.18 (C) 株式会社破滅派
10
include($path) 通常の読み込み
require($path) 読み込みに失敗したらエラーが起きてPHP終了
include_once($path) 上記と同じだが、一度しか読み込まない。
require_once($path) (=すでに読み込まれている場合は読み込まない)
読み込み方法には四種類あります。
【includeとrequireの使い分け】 そのプログラムにとって不可欠なものはrequire。なくてもよかったら、include。
【*_onceのあるなし】 なんども呼び出す可能性のあるもの(HTMLタグのパーツ)は_onceなし。 一度しか呼び出せないもの(関数定義)は*_once。
もし関数が書かれたファイルを二回読み込んだら?
つまり…
もし同じ名前の関数を二回定義したら?
【おまけ】IDEとは?
10.4.18 (C) 株式会社破滅派
11
Integrated Development Enviorment ↓
統合開発環境 ↓
色々揃った開発用ツールのこと ・コードヒント ・シンタックスカラーリング ・検索、置換 ・FTPアップロード ・バージョン管理システムとの連携 …その他もろもろ
Eclipse + PDT Aptana(オススメ) Dreamweaver Emacs, Vim
…他にも色々あります
【課題】PDFを作ってみよう
10.4.18 (C) 株式会社破滅派
12
なんと、PHPでPDFを生成することができます。
1. PDFはAdobe社の製品ですが、オープンソースとして、その仕様が公開されています。 参考: http://www.adobe.com/devnet/pdf/pdf_reference.html
2. したがって誰でもPDFは作れますが、あまりに複雑な仕様なので、並の人間では太刀打ちできません。
3. あるとき、優れたプログラマーがPHPからPDFを作成できるプログラムを作成して、再利用しやすい形で配布してくれました。
4. requireで華麗に読み込めば、あたかも自分が作ったかのように動きます。
そのプログラムの名は「FPDF」 他にもいろんなクラスがあるよ