更新履歴
更新日 | 更新者 | 更新内容 |
---|---|---|
2021/7/5 | JJI | サンプルライブラリの更新 |
2021/7/20 | JJI | sample_common.phpにDB、HTMLの共通関数ファイルの追加 sample_common_db.php、sample_common_html.phpの追加 |
2021/8/13 | JJI | 配列用のサンプルライブラリを追記 |
はじめに
「【速習】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";
}
?>
コメント