【PHP】サンプルプログラム集

PHP

更新履歴

更新日更新者更新内容
2021/7/5JJIサンプルライブラリの更新
2021/7/20JJIsample_common.phpにDB、HTMLの共通関数ファイルの追加
sample_common_db.php、sample_common_html.phpの追加
2021/8/13JJI配列用のサンプルライブラリを追記

はじめに

【速習】PHPプログラミング」の各記事で共通のクラス、関数を使用している場合があります。
この記事では、共通で使用しているプログラムのコードを載せています。

サンプルライブラリ

サンプルライブラリは共通関数のコードを書いているファイルです。
サンプルライブラリには次のものが存在します。

lib/sample_common.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    // 配列の共通関数
    require "sample_common_array1.php";
    require "sample_common_array2.php";

    // ファイルシステムの共通関数
    require "sample_common_file.php";

    // HTMLの共通関数
    require "sample_common_html.php";

    // データベースの共通関数
    require "sample_common_db.php";
?>

lib/sample_common_array1.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * 1次元配列の出力
     * 1次元配列をスペース区切りで[キー][値]の形式で出力する
     *
     * @param array $ary 1次元配列
     * @return void
     */
    function echo_array1(array $ary) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            // 2行目以降の場合、スペースの出力
            if($i !== 0) {
                echo " ";
            }
            echo "[$key]:" . $val . ":";
            $i++;
        }
        echo "<br><br>\n";
    }

    /**
     * 1次元配列の出力
     * 1次元配列の要素を<br>\nの形式で出力する
     *
     * @param array $ary 1次元配列
     * @return void
     */
    function echo_array1_line(array $ary) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            echo "[$key]:" . $val . ":<br>\n";
        }
        echo "<br>\n";
    }

    /**
     * 1次元配列の出力
     * 1次元配列の要素をパラメータに指定した関数の内容で出力する
     *
     * @param array $ary 1次元配列
     * @param string $func 関数
     * @return void
     */
    function echo_array1_call(array $ary, string $func) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            echo "[$key]:" . $func($val) . ":<br>\n";
        }
        echo "<br>\n";
    }

    /**
     * 1次元配列の出力
     * 1次元配列の要素をパラメータに指定した関数の内容で出力する
     *
     * @param array $ary 1次元配列
     * @param string $func 関数
     * @return void
     */
    function echo_array1_call2(array $ary, callable $func) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            echo "[$key]:" . $func($val) . ":";
        }
        echo "<br>\n";
    }
?>

lib/sample_common_array2.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * 指定されたユーザ定義関数で配列の要素を表示する
     *
     * @param array $ary 1次元配列
     * @param callable $func ユーザ定義関数
     * @return void 戻り値なし
     */
    function uecho_array1(array $ary, callable $func) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            echo $func($i, $key, $val);
            $i++;
        }
    }
?>

lib/sample_common_file.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * Windowsコマンド実行処理
     *
     * @param string $cmdstr コマンド文字文字列
     * @param boolean $output_flg 実行結果フラグ trueの場合、実行結果出力、falseの場合、実行結果出力しない
     * @return コマンド処理結果コード
     */
    function exec_win_cmd(string $cmdstr, bool $output_flg) {
        // 実行コマンドの出力
        echo $cmdstr . "<br>\n";
        // 実行コマンド
        exec($cmdstr, $output, $code);

        // 実行結果フラグが有効な場合、実行結果の出力
        if($output_flg) {
            for($i = 0; $i < count($output); $i++) {
                // 実行結果はSJISのため、UTF-8に変換
                echo "[$i] " . mb_convert_encoding($output[$i], "UTF-8", "SJIS") . "<br>\n";
            }
        }
        return $code;
    }

    /**
     * Windowsコマンド実行処理
     * コマンドの出力結果はユーザ定義関数で出力する
     *
     * @param string $cmdstr コマンド文字文字列
     * @param boolean $output_flg 実行結果フラグ trueの場合、実行結果出力、falseの場合、実行結果出力しない
     * @param callable $func コールバック関数
     * @return コマンド処理結果コード
     */
    function exec_win_ucmd(string $cmdstr, bool $output_flg, callable $func) {
        // 実行コマンドの出力
        echo $cmdstr . "<br>\n";
        // 実行コマンド
        exec($cmdstr, $output, $code);

        // 実行結果フラグが有効な場合、実行結果の出力
        if($output_flg) {
            $i = 0;
            foreach($output as $key => $val ) {
                echo $func($i, $key, $val);
                $i++;
            }
        }
        return $code;
    }

    /**
     * ディレクトリパス変換処理
     * "/"をWindowのディレクトリパス"\"に変換する
     * @param string $str 変換前のパス文字列
     * @return string 変換後のパス文字列
     */
    function conv_path(string $str) :string {
        return preg_replace("/\//", "\\", $str);
    }
?>

lib/sample_common_db.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * データベース接続処理
     *
     * @param string $dbn DB接続文字列
     * @param string $dbusr DBユーザ名
     * @param string $dbpw DBユーザのパスワード
     * @return PDOオブジェクト
     */
    function connect_db(string $dbn, string $dbusr, string $dbpw) :PDO {
        $pdo = null;

        try {
            // データベースに接続
            $pdo = new PDO($dbn, $dbusr, $dbpw);

            return $pdo;
        } catch(PDOException $e) {
            // catch句は例外をキャッチし、スロー
            $pdo = null;
            throw $e;
        }
    }
?>

lib/sample_common_html.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * 共通HTMLヘッダ出力処理
     *
     * @param string $title 
     * @return void なし
     */
    function common_html_header(string $title) :void {
        echo '<!DOCTYPE html>' . "\n";
        echo '<html lang="ja">'. "\n";
        echo '<head>'. "\n";
        echo "\t". '<meta charset="UTF-8">'. "\n";
        echo "\t". "<title>$title</title>". "\n";
        echo '</head>' . "\n";
        echo '<body>' . "\n";
    }

    /**
     * 共通HTMLフッター出力処理
     *
     * @return void なし
     */
    function common_html_footer() :void {
        echo '</body>' . "\n";
    }
?>

配列用サンプルライブラリ

lib/sample_lib_02_03.php

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    /**
     * 1次元配列の出力
     * 1次元配列をスペース区切りで[キー][値]の形式で出力する
     *
     * @param array $ary 1次元配列
     * @return void
     */
    function echo_array1(array $ary) :void {
        $i = 0;

        foreach($ary as $key => $val) {
            // 2行目以降の場合、スペースの出力
            if($i !== 0) {
                echo " ";
            }
            echo "[$key]:" . $val . ":";
            $i++;
        }
        echo "<br><br>\n";
    }
?>

コメント