04 filesystem include

12
PHP講座(4) ファイルシステム操作 ファイルのインクルード この教材ではPHPならではの機能であるファイル操作について学びます。 また、再利用のためのインクルード機能についても学びます。 この2つを応用していけば、HTMLにはできないことができます。 作業効率も大幅アップ間違い無し!

description

PHPのファイルシステム関数とインクルードについてです。

Transcript of 04 filesystem include

Page 1: 04 filesystem include

PHP講座(4)!ファイルシステム操作!ファイルのインクルード

この教材ではPHPならではの機能であるファイル操作について学びます。 また、再利用のためのインクルード機能についても学びます。 この2つを応用していけば、HTMLにはできないことができます。 作業効率も大幅アップ間違い無し!

Page 2: 04 filesystem include

PHPはファイルを操作できる!  

だからなに?  

えっ…やってみよう!  

ファイルシステム

10.4.18 (C) 株式会社破滅派

2

HTMLやJavascript、Flashにはできません。 サーバサイド言語ならではです。  

Page 3: 04 filesystem include

大前提・ファイルパスについて

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

ファイルシステムパスはなるべく相対パスで書きましょう。  サーバが変わっても動きます。

Page 4: 04 filesystem include

ファイルおよびディレクトリの作成、コピー、移動、削除

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”);  

?>

こんにちは~

こんにちは~

裏側でこっそりアクセスデータを記録しておく

【例えばこんな使い方】  

Page 5: 04 filesystem include

ファイルの情報・中身を操作する

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)  ファイルにデータを書き込む  

これ記録しといて

はいよー

ユーザーがフォームから送ってきたデータを保存する

【例えばこんな使い方】  

Page 6: 04 filesystem include

ファイルアップロードの仕組み

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の仕事  

サーバは送信されてきたファイルを一時フォルダに格納する  

このままでは削除される

Page 7: 04 filesystem include

ファイルのインクルード

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  ?>で囲まれた部分はそのまま動きます。

Page 8: 04 filesystem include

ファイル読み込みのよくある例(1)

10.4.18 (C) 株式会社破滅派

8

header.php

category.phpを作ることになっても、ヘッダーやフッターは再利用できる!

Webサイト内で何度も表示するパーツを読み込む

footer.php sidebar.php

contents.php

ヘッダー

サイドバー

フッター

Page 9: 04 filesystem include

ファイル読み込みのよくある例(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{    //ログインしていないときの処理  

}  ?>

Page 10: 04 filesystem include

読み込み方法の違い

10.4.18 (C) 株式会社破滅派

10

include($path)    通常の読み込み  

require($path)    読み込みに失敗したらエラーが起きてPHP終了  

include_once($path)  上記と同じだが、一度しか読み込まない。  

require_once($path)  (=すでに読み込まれている場合は読み込まない)

読み込み方法には四種類あります。

【includeとrequireの使い分け】  そのプログラムにとって不可欠なものはrequire。なくてもよかったら、include。  

【*_onceのあるなし】  なんども呼び出す可能性のあるもの(HTMLタグのパーツ)は_onceなし。  一度しか呼び出せないもの(関数定義)は*_once。

もし関数が書かれたファイルを二回読み込んだら?  

つまり…  

もし同じ名前の関数を二回定義したら?

Page 11: 04 filesystem include

【おまけ】IDEとは?

10.4.18 (C) 株式会社破滅派

11

Integrated  Development  Enviorment  ↓  

統合開発環境  ↓  

色々揃った開発用ツールのこと ・コードヒント  ・シンタックスカラーリング  ・検索、置換  ・FTPアップロード  ・バージョン管理システムとの連携  …その他もろもろ  

Eclipse  +    PDT  Aptana(オススメ)  Dreamweaver  Emacs,  Vim  

…他にも色々あります  

Page 12: 04 filesystem include

【課題】PDFを作ってみよう

10.4.18 (C) 株式会社破滅派

12

なんと、PHPでPDFを生成することができます。

PDF

1.  PDFはAdobe社の製品ですが、オープンソースとして、その仕様が公開されています。  参考:  http://www.adobe.com/devnet/pdf/pdf_reference.html  

2.  したがって誰でもPDFは作れますが、あまりに複雑な仕様なので、並の人間では太刀打ちできません。  

3.  あるとき、優れたプログラマーがPHPからPDFを作成できるプログラムを作成して、再利用しやすい形で配布してくれました。  

4.  requireで華麗に読み込めば、あたかも自分が作ったかのように動きます。  

そのプログラムの名は「FPDF」  他にもいろんなクラスがあるよ