忍者ブログ

[PR]

2024-04-30 01:49

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PHPで参照渡しが失敗する件

2011-01-17 04:59

 PHPで関数宣言の引数に&を付けて参照渡しをしようとしたところ、どうやってもできない。呼び出し元の実引数に&を付けたらうまいこと行く時もあるが、PHPでは推奨されずにエラーが返る(こともある)。
 何度も検証を重ねた結果、ディレクトリが違うとうまくいかないらしいことが分かった。なぜ。これが通らないとちょっと困るぞ。

 あと、PHPのマニュアルに「注意: PHP 5以降、デフォルトで値はリファレンス渡しとなります。」とあるが、うちの環境PHP5.2.14ではちゃんと値渡しになってるよ。もうどういうことか説明して!
PR

PHPでのメンバアクセス

2011-01-16 18:53

 PHPプログラミングを行う際、メンバ変数を使っても値が更新されない場合がありました。原因はthis->がなかったことでした。Javaなどと違って、メンバに$varという変数を参照する場合はメソッド内で$this->varと、クラスのメンバであることを明示的に書かなければいけません。

変数の存在チェック

2011-01-14 17:13

変数が宣言されたか、空でないかなどといったチェックはプログラミング上よく行います。
そのチェックの種類を挙げていきます。

empty
isset

emptyはその名の通り、変数の中身が空である時に真を返します。
issetは変数がセットされていれば真を返します。
それぞれの真偽がよく混同してしまうので、各場合について列挙してみました。

左:empty、右:isset
変数未定義:真 偽
NULL:真 偽
"":真 真
0:真 真
0.0:真 真
"0":真 真
"0.0":偽 真
unset(var):真 偽
FALSE:真 真

emptyは偽になる値が入っている変数も空とみなします。
issetは定義済みかつNULL以外の値が入っている場合のみ真となります。

cURL

2011-01-14 17:13

file_get_contents()はローカルホスト上では動いても、サーバにアップすると動かないことが多々あります。これはセキュリティ上の配慮で、簡単にfileをOpen/Writeできなくするためです。
php.iniでallow_url_fopen = On、allow_url_include = Onという設定をしたらうまくいくそうです。

ただ、レンタルサーバなどではphp.iniは編集できない場合が多いと思います。そんなときに役立つのがcURLです。php上で

function get_contents($url){
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);

ob_start();

curl_exec($ch);
curl_close($ch);
$contents = ob_get_contents();

ob_end_clean();

return $contents;
}

などと書けば、 get_contents($URL)を実行するだけで、URLから取得した文字列が返ってきます。

 このcURLを使ってWebAPIにマルチリクエストを行うこともできます。マッシュアップを行うなら、順番にリクエストを行うよりも確実に早くなると思います。
 ひとつのAPIから複数ページをリクエストすることもできますが、あまり多くリクエストすると規制がかかる場合があるので要注意です。

ブログ内検索

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新トラックバック

最新コメント

プロフィール

HN:
KUMA
HP:
性別:
男性
職業:
学生
趣味:
Web, Programing
自己紹介:
マッシュアップやプログラミングなどを行なっております。
情報に不具合が御座いましたらコメントくださると幸いです。