13
PHP講座(6) 再利用のためのインクルードとクラス この授業では、プログラミングにとってもっとも重要な「再利用」について学びます。 同じことを繰り返す無駄をいかになくすか? 「面倒くさがり」であることは、上達への近道です。

06 再利用のためのインクルードとクラス

  • Upload
    -

  • View
    1.374

  • Download
    2

Embed Size (px)

DESCRIPTION

PHPの基礎であるファイルのインクルードとオブジェクト志向についての説明です。

Citation preview

Page 1: 06 再利用のためのインクルードとクラス

PHP講座(6)!再利用のためのインクルードとクラス

この授業では、プログラミングにとってもっとも重要な「再利用」について学びます。 同じことを繰り返す無駄をいかになくすか? 「面倒くさがり」であることは、上達への近道です。

Page 2: 06 再利用のためのインクルードとクラス

再利用の方法

10.4.18 (C) 株式会社破滅派

2

index.php 【出力結果】  こんにちは<br  />  お久しぶり!

読み込まれたファイルは呼び出し元のファイルの一部分であるかのように処理されます。

PHPは他のファイルを読み込むことができます。

greet.php

<?php    echo  “こんにちは”;    include(“greet.php”);  

?>

<?php    echo  “<br  />”;    echo  “お久しぶり!”;  

?>

【構文】  include(“/var/hogehoge/”);  

 “/var/hogehoge/”にあるパスを読み込む

Page 3: 06 再利用のためのインクルードとクラス

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

10.4.18 (C) 株式会社破滅派

3

header.php

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

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

footer.php sidebar.php

contents.php

ヘッダー

サイドバー

フッター

Page 4: 06 再利用のためのインクルードとクラス

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

10.4.18 (C) 株式会社破滅派

4

ログイン用の機能をlogin.phpに入れることで、コードを何度も書き直さずに済みます。

ログイン機能がある「会員専用サイト」で、認証機能を切り分けて使いまわす。

login.php

bbs.php member.php

index.php

cart.php

<?php    $login  =  is_user_login();    if($login){      //ログイン済みの時    }else{      //ログインしていないときの処理    }  

?>

Page 5: 06 再利用のためのインクルードとクラス

読み込み方法の違い

10.4.18 (C) 株式会社破滅派

5

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

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

include_once($path)  上記と同じだが、一度しか読み込まない。  require_once($path)  (=すでに読み込まれている場合は読み込まない)

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

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

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

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

つまり…  

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

Page 6: 06 再利用のためのインクルードとクラス

ファイルパスについて(おまけ)

10.4.18 (C) 株式会社破滅派

6

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  

パスの書き方には二種類あります

参考情報:  相対パスと絶対パスとは        絶対パスと相対パス

Page 7: 06 再利用のためのインクルードとクラス

PDFを作ってみる

10.4.18 (C) 株式会社破滅派

7

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

PDF

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

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

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

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

Page 8: 06 再利用のためのインクルードとクラス

PEARについて

10.4.18 (C) 株式会社破滅派

8

PEARとは、PHP  Extension  and  Application  Repositoryの略で、要するにみんなが作ったクラスを置いておく場所です。  

自分のホームページとかに置かれると探すのが大変なので、一箇所に集めています。  

インストールがちょっとだけ面倒なので、余裕のある人はトライしてみてください。便利なものがいろいろあります。  

ヒント:「PEAR  インストール」でググる  

Page 9: 06 再利用のためのインクルードとクラス

クラスとは? オブジェクト指向とは?

10.4.18 (C) 株式会社破滅派

9

オブジェクト指向とは、再利用しやすいプログラムのためのルールです。  

一つ一つのプログラムをオブジェクトのように見立てます。  

その設計図が「クラス」です。  

おそらく、まったく意味がわからないと思います。

Page 10: 06 再利用のためのインクルードとクラス

クラスのたとえ(1)

10.4.18 (C) 株式会社破滅派

10

オブジェクト指向はそもそも機械工学の世界から誕生しました。  あらゆるものをオブジェクト(モノ)と考えます。

オブジェクト:タイヤ オブジェクト:ハンドル

オブジェクト:フレーム オブジェクト:アクセル

オブジェクト:車

Page 11: 06 再利用のためのインクルードとクラス

クラスのたとえ(2)

10.4.18 (C) 株式会社破滅派

11

オブジェクト:MyCar

クラスはオブジェクトを作るための設計図。  設計図からオブジェクトを作ることを「インスタンス化」といいます。

クラス:Car

<?php  $MyCar  =  new  Car();  ?>

Page 12: 06 再利用のためのインクルードとクラス

クラスのたとえ(3)

10.4.18 (C) 株式会社破滅派

12

クラスにはプロパティ(部品)とメソッド(機能)があります。

クラス:Car 部品:ブレーキ、ハンドル、

アクセル、エンジン  機能:進む、止まる、曲がる、

バックする、エンジンをかける

<?php  class  Car{  

 //プロパティ    var  $handle;    var  $break;    var  $accel;    var  $engine;  

 //メソッド    function  go(){}    function  stop(){}    function  turn($direction){}    function  engine_start(){}  

}  ?>

Page 13: 06 再利用のためのインクルードとクラス

PHPerのキャリアパス

10.4.18 (C) 株式会社破滅派

13

上級PHPerになるために必要なこと  

•  オブジェクト指向プログラミングの理解  •  各種ライブラリ・ツール群の知識  •  フレームワークの理解  •  サーバ設定の理解  

クラスを作って配布する側になるか?  配布されていたものを使う側になるか?