サンプル集 |
■VC ■C# ■Java ■BorlandC ■LinuxC ■MS-DOS ■bash ■Excel VBA ■VBScript ■PHP ■HTML ■perl ■iPhone ■Android ■Lua ■other |
Linuxコマンド |
用語集 |
debian メモ |
apache2 メモ |
MySQL メモ |
Oracle メモ |
HOME |
phpを見ていたらこんなロジックを見かけました。
<?php
while(true) {
if(is_null($argv[1]) {
echo "error!!\n";
break;
}
:
何か処理
:
break;
}
?>
while(true) {
if(is_null($argv[1]) {
echo "error!!\n";
break;
}
:
何か処理
:
break;
}
?>
whileで回しても、結局ifに入ろうが入るまいがbreakするのでwhileはいらないのでは?と思いました。
よくよく見てみると、ifに入った場合、「何か処理」の部分の処理を行いたくない・・・という作りであることが分かりました。
こういう場合、関数化した方が良いのではないでしょうか。
<?php
function mainLogic($argv1) {
if(is_null($argv1) {
echo "error!!\n";
return;
}
:
何か処理
:
}
mainLogic($argv[1]);
?>
function mainLogic($argv1) {
if(is_null($argv1) {
echo "error!!\n";
return;
}
:
何か処理
:
}
mainLogic($argv[1]);
?>
while(true)だと、break忘れると無限ループになるので危険です。
関数化した方が絶対いいと思い、コーディング後実行したら「関数の外で宣言した変数が使えない」というエラーが出ました。。。
<?php
$dbCon = new DBMysql();
function mainLogic($argv1) {
:
何か処理
:
}
mainLogic($argv[1]);
?>
$dbCon = new DBMysql();
function mainLogic($argv1) {
:
何か処理
:
}
mainLogic($argv[1]);
?>
この場合、mainLogic関数の中で$dbConが使えません。 そこで$dbConを引数で渡すようにしてみました。
<?php
$dbCon = new DBMysql();
function mainLogic($argv1, $dbCon) {
:
何か処理
:
}
mainLogic($argv[1], $dbCon);
?>
$dbCon = new DBMysql();
function mainLogic($argv1, $dbCon) {
:
何か処理
:
}
mainLogic($argv[1], $dbCon);
?>
これでちゃんと動きました。
Copyright (C) 2012 ymlib.com