PHP 関数化するときの注意

	<?php
	function test(){
		$a = 10;
		// ①return を使って、呼び出し元に値を返す!
		return $a; // ②$aは関数内しか有効じゃない。
	}
	//③変数に関数をいれると、関数で実行された返り値が変数に格納される。
	$a = test();
	echo $a;
	?>

DB接続処理を関数化する時は

	<?php

	function db_open():PDO{ //PDO型を指定
		$user ="phpuser";
		$password = ""xxxxx;
		$opt = [
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_EMULATE_PREPARES => false,
			PDO::MYSQL_ATTR_MULTI_STATEMENTS =>false,		
		];
		$dbh = new PDO('mysql:host=localhost;dbname=sample_db;charset=utf8;',$user,$password,$opt);
		return $dbh;//返り値を返す
	}
	
	var_dump($dbh);//object(PDO)#1 (0) { }PDOオブジェクトが返ってくる
	?>

//使う時
<?php
require_once 'functions.php';//読込
try {
	$dbh = db_open();//変数に関数をいれる。
   $sql = 'SELECT title, author FROM books';
   $statement = $dbh->query($sql);

   while ($row = $statement->fetch()) {
       echo " 書籍名:" . str2html($row[0]) . "<br>";
       echo " 著者名:" . str2html($row[1]) . "<br><br>";
   };
} catch (PDOException $e) {
   echo " エラー!: " . str2html($e->getMessage()) . "<br>";
   exit;
}


この記事が気に入ったらサポートをしてみませんか?