WEBデザイン・開発講義WEB Design&Development Lecture

PHPプログラミングのコース概要

「PHPプログラミング」コース概要

「PHPプログラミング」の概要、基本構文、基本文法と機能体系

「PHPプログラミング」の概要※画像クリックで拡大表示

  • PHPスクリプト言語の特徴は、
    1. HTMLの表示内容を変更したり、入力内容により処理制御するなどのプログラム記述して実行させる言語で、処理の手順を記述したソースファイルを解釈してサーバー側で実行するインタープリタ言語です。(コマンドラインからも実行可能です。)
    2. PHPは、マークアップ言語の一種でプログラミングを可能としており、「HTML」ドキュメントに特別なPHPタグ指定(<と>で囲む)を埋め込んでプログラム実行させるものです。
    3. ソースファイルの拡張子は、「php」であり、ApacheなどのWEBサーバーのドキュメントエンコーディング(MIME)でphp指定が必要です。
      PHPのインストールの『httpd.conf』」を参照
  • PHPのバージョン遷移と利用するバージョンは、
    PHPリリースバージョンのロードマップ
    のように、PHP5.4をベースにしたプログラミング作成と文法を習得します。(Window XP,2003のOS対応もPHP5.4までとなっているため)
    PHP5.3から5.4へ移行のインストール」を参照
  • PHPの基本的な構文
    項目指定方法説明
    PHP開始・終了タグ<?php …?>PHPタグの通常型
    PHP5.3以降は、開始タグの後に空白が一文字でもあればそのようなファイルもパース処理(実行)可能。
    <? ….?>PHPタグの短縮型
    「php.ini」でshort_open_tagをonにする必要あり。
    <?= ….?><? echo … ?>と同じ形式
    PHP5.4より以前は、「php.ini」でshort_open_tagをonにする必要がありますが、PHP5.4以降では、<?= は常に有効。
    <% ….%>ASP形式のタグの指定
    →PHP7.0 から削除
    asp_tagsをonにするとphpタグとして利用可能。
    <script language= "php">
    〜 </script>
    script タグ
    →PHP7.0 から削除
    命令分離
    (セミコロン)
    各命令の終了(区切り)は、セミコロン(;)で指定します。PHPタグの終了前の命令分離「;」は、不要。
    コメント // 又は #指定した文字以降が、一行のコメント。
    /* ~ */指定した文字範囲内が、複数行のコメント。
    (注):「echo」は、文字列の表示定義文
  • PHP開始・終了タグは、「<?php …?>」と「<?= ….?>」以外は利用しないコーディング規約とします。
  • ファイル全体が、PHPソースコードの場合は、「?>」のPHP終了タグは記述しないように推奨しています。
    (「require文,include文」などの外部ファイルの読み込みで、外部ファイルの余分な動作防止のため)
  • PHPタグとHTMLタグの指定方法
    1. HTMLドキュメント内に埋め込むPHPタグの場合
      <html>
      <head> ... </head>
         ...  (HTMLの記述内容)
      <body>
      <?php
         ...  (PHPの記述内容)
      >
      </body></html>
      ※一般的なPHPを盛り込んだソースフォーマットの記述方法です。
    2. 全てPHPタグでrequre(後述)で外部ファイル(HTML)読込の場合
      <?php
      reqire "xxx_header.html";
         ...  (PHPの記述内容)
      reqire "xxx_footer.html";
      >
      ※require関数を利用して、HTMLドキュメントファイルのヘッダー部「xxx_header.html」、フッター部「xxx_footer.html」を構造的に分離して共通的に利用できるようにして、それぞれのページで違うボディ部分をPHP作成する方法が可能となります。
    3. PHPタグ内にヒアドキュメント(後述)のHTMLタグ記述の場合(混合記述)
      <?php
      echo <<< _EOF_
      <html> ... <body>
      _EOF_;
         ...  (PHPの記述内容)
      >
         ...  (HTMLの記述内容)
      </body></html>
      ※ヒアドキュメントを利用して、HTMLドキュメントのソースフォーマットを崩さずに利用する方法が可能になります。
  • PHP作成の内部コードは、
    PHP5.2以降の開発内部コードが「UTF-8」になり親和性を含め、HTMLドキュメント(charsetも同様に設定)、PHPソースファイルは全て「UTF-8」に統一します。DBの「MySQL」の保存コードも「UTF-8」に統一します。
    (注):「php.ini」で「mbstring.language = Japanese;」、「mbstring.internal_encoding = UTF-8;」を指定してPHP処理のコードを統一します。
  • PHPの取扱い可能なデータの型は、
    8種類の基本型をサポートしており、4種類の論理値、整数、浮動小数点数、文字列をスカラー型と呼びます。
    型の種類型セットタイプ説明
    論理値bool、boolean真(TRUE)か偽(FALSE)かを示す
    整数int、integer正の整数、ゼロ、負の整数0755 など「0」で始まる数字は8進数、0x7ff など「0x」で始まる数字は16進数
    浮動小数点数foat、double、実数小数や実数
    文字列stringシングルクォート「'」やダブルクォート「"」で囲まれた文字。
    "..."の中では改行やタブ(¥n,¥t)などのエスケープシーケンスや変数を利用できますが、'...' の中では単なる文字列となります
    配列arrayインデックス番号やキーワードにより分割(パーティション)区切りのある変数
    オブジェクトobjectあるデータや、メソッド・プロパティを一体化したもの(をオブジェクト)
    リソースresource関数によって作成される特別な型(ファイルハンドル、データベースへのリンク)オープンしたファイル、データベース接続など特別な値を持つリソース値
    ヌルNULL値無し(変数が値を持たないこと)を示す

PHP基本文法と機能の体系

  • PHP基本文法
    PHPスクリプト言語は、文字列・配列と関数を組み合わせた基本的なプログラミングから、高度な機能のクラス・オブジェクト、正規表現、CGI、セッション処理、データベース操作、マルチメディア処理、メール送受信などの最終的に実用的なアプリケーション作成までが可能です。またフレームワークを利用したプログラミングも可能です。
    PHPスクリプト言語文法まとめ(PDF)
  • 変数は、
    「$」ドル記号の後に変数名が続く形式で、変数名は英字またはアンダースコア(ライン)「_」から始まり、英数字と「_」が続く形式で表されます。
    「予約語」「スーパーグローバル変数」、「スコープ」、「可変変数」などの特徴を理解する必要があります。
  • 文字列は、
    表示用に「print」、「print_r()」、「echo」があり、printは関数として定義され、戻り値があり、文字列をひとつしか指定できませんが、echoは言語構造(言語仕様のひとつ)として定義され、戻り値は無く、カンマを用いて文字列を複数指定できます。 「print_r()」は、変数の値に関する情報を解り易い形式で表示できるため、配列の構造的な表示用に利用します。
    変数のパース(実行)」は、スクリプトがダブルクォートで括られるかヒアドキュメント(後述)で指定された場合、その中の変数はパースされます。変数名と後続の文字の境が無い場合は、変数を { } で囲むとパースされます。
    文字列の連結」は、文字列間にドット「.」で指定することで連結可能です。
  • 配列は、
    添字が整数 0,1,..,nの単純配列と、添字が文字列の連想配列に大別され、組込まれた array() で作成することが可能で、「添字(省略可)と値」の対応した要素をコンマで区切って複数指定できます。(最後の要素のあとのカンマは、なくても良い)
    配列の設定は、1つの変数名「$ary」に対して、
    単純配列の場合、値のみの「$ary=array(1,3,'abc');」のように設定、配列要素のアクセスは「$ary[0], $ary[1]...」のように記述。
    連想配列の場合、添字と対応値からなる要素の「$ary=array('a'=> 'abcd','b'=>'efgh',);」のように設定、配列要素のアクセスは「$ary["a"],$ary["b"]」のように記述。
    多次元配列は、配列の要素として配列を格納したものであり、単純配列、連想配列の混合した構造でも可能です。
    無名配列は、array() の代わりに [] (ブラケット)も使えます。(PHP5.4以降)
    (例)多次元配列設定、追加と表示(print_r 利用)
    $ary = array(
      'abc',array('a' => '多次元','b'=>'配列設定')
      );
    $ary[] = '追加';  //多次元配列に文字列を追加
    echo '<pre>';
    print_r($ary);    //多次元配列を表示
    echo '</pre>';
    ※実行結果の表示内容で多次元配列データ構造を確認
    Array
    (
        [0] => abc
        [1] => Array
            (
                [a] => 多次元
                [b] => 配列設定
            )
    
        [2] => 追加
    )
  • 演算子は、
    無名配列、代数演算子、比較演算子、論理演算子、ビット演算子、三項演算子、代入演算子があります。
    (詳細は以下を参照)
    PHPの演算子の詳細と優先順位(PDF)
  • 制御構造は、
    処理分岐「if ~ elseif/else if ~ else,switch」、
    繰り返し「while,do-while,for,foreach」、
    制御「break,continue,return,goto(PHP5.3以降)」
    などの命令文があります。
  • 外部プログラム読み込みは、
    ライブラリやサブプログラムの読み込みには、ファイルの読み込み失敗した場合に警告 (E_WARNING) を発し処理は続行の「include」とファイルの読み込み失敗した場合に致命的なエラー発生(E_COMPILE_ERROR レベル)し処理は中断の「require」があります。
    既に同じ外部ファイルをロードしている場合は、ロードしない「require_once,include_once」もあります。
  • 関数は、
    組込み関数とユーザ定義関数の2種類があります。使い方は同じですが組込み関数はPHPであらかじめ用意された関数であり、ユーザ定義関数「function 関数名(引数){ ... }」は自分で定義した関数で、途中に記述してあっても定義のみのため処理を実行しません。関数を実行する場合は、「関数名(引数);」の命令文を記述する必要があります。
    (例1)今日の日付を書式化する組込み関数(date)を利用したユーザ定義関数(get_now)から、日付表示する
    echo get_now();  //ユーザ定義関数を実行して表示
    function get_now(){  //今日の日付を得るユーザ定義関数
      return date("Y-m-d H:i:s");  //日付書式化の関数
    }
    ※上記例をコピー、PHPタグで囲んだソース作成してPHP実行で、表示例:"2015-07-13 17:39:08"を確認下さい。
  • ヒアドキュメント
    ヒアドキュメント構文 「命令文 <<< 指定終了ID   ~  (改行後)指定終了ID;」があります。「<<<」の後にヒアドキュメントの終了するIDを指定して、任意の文字列を記述した後で、改行後の指定終了IDと区切りの「;」までを対象範囲として文字列処理をします。
    (例1)任意の文字列を表示する
    echo <<<  _EOL
      ... (任意の文字列)
    _EOL;
    (例2)任意の文字列を変数($str)に代入する
    $str = <<<  _EOL
      ... (任意の文字列)
    _EOL;
  • 実践的アプリケーション作成の主な機能体系は、
    主な機能機能習得の対象
    セッションとクッキー$_SESSIONと$_COOKIEのスーパーグローバル変数
    session_startなどの関連関数を利用
    CGI
    フォーム処理
    $_GET,$_POST,$_REQUEST,$_FILESのスーパーグローバル変数
    ファイルアップロード処理
    圧縮・解凍「zip」
    正規表現preg_xxxの各種関数
    Perl言語互換の正規表現を利用
    クラスとオブジェクトクラス、コンストラクタ
    プロパティ、メソッド
    クラスの抽象化
    オブジェクトの継承
    インターフェイス
    オーバーロード
    ファイルシステムディレクトリとファイルの作成・削除
    入出力レコード処理
    データベースMySQL への接続用のAPIが三種類「mysql、 mysqli 、PDO」あり、mysqli か PDO_MySQLを利用(推奨)
    メール「mail、IMAP、POP3」
    マルチパート「Mail、Mail_Mine」利用
    メールサーバーとPHP連携プログラミング」を参照
    マルチメディア画像処理「GD、ImageMagick」
    動画処理「FFMPEG」
    WEBサービス、SNSRSS連携「simplexml_load_file」
    「http_request」
    SNS連携「facebook」
    ライブラリ・リポジトリPEAR、PECL
    GitHub
    などがあり、習得目標とします。
    ※尚、以下のものは、実践WEB開発で習得します。
    フレームワークテンプレート「Smarty」
    フレームワーク「cakePHP、Symphony」
    パッケージ「WordPress、EC-CUBE」

PHPプログラミング補足説明

PHPリファレンス

推奨参考図書

pagetopへ