目次
phpのまとまりのないメモ
メモ書き
- PHP: PHPにできることは? - Manual
- 0は8進数、0xは16真数
- 使ったこと無いけど エスケープシーケンスには /7 とか /xFF とかあるのね。
- 二十引用符(とヒアドキュメント)内の変数は展開される
- Nowdoc(from PHP5.3.0)
- 用語:第一オペランド、リテラル
命名規則とかお約束っぽいもの
「命名規則ってなんだ…」とか数日前に思いました。
ということで参考にしたサイトのリンク
- PHPコーディングスタイル : CodeIgniter ユーザガイド 日本語版
- 命名規則 (プログラミング) - Wikipedia
- PHPのオブジェクト指向入門 | オブジェクト指向PHP.NET
- 名前に関するガイドライン
- Zend Framework PHP 標準コーディング規約 - Programmer's Reference Guide - Zend Framework
- ハンガリアン記法 - Wikipedia
スタティック変数
<?php
function test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 9) {
test();
} else {
echo "\n";
}
if( $count==8 ){
$count -= 5;
} else {
$count--;
}
}
test(); test(); test(); test();
?>
結果
123456789
-3-2-10123456789
-7-6-5-4-3-2-10123456789
-11-10-9-8-7-6-5-4-3-2-10123456789
スタティック変数の初期化には式は使えない
<?php
function static_test($int) {
static $static = $int;
}
?>
結果
Parse error: syntax error, unexpected T_VARIABLE in ファイルパス on line 3
import_requestvariables()とかHTTP***_VARSとか
import_request_variables()
GET/POST/Cookie変数をグローバルスコープにインポート。
<?php
$action = preg_replace('/\?(.*)$/ui','',$_SERVER[REQUEST_URI]) . '?get=get_value' ;
echo <<< FORM
<form action="$action" method="post">
<input type="hidden" name="post" value="post_value" />
<input type="submit" value="post">
</form>
FORM;
import_request_variables('p', 'p_');
echo $p_post . "\n" ;
import_request_variables('g', 'g_');
echo $g_get . "\n" ;
import_request_variables('gp', 'gp_');
echo "$gp_post & $gp_get" . "\n\n" ;
var_dump( $HTTP_POST_VARS );
var_dump( $HTTP_GET_VARS );
?>
結果
post_value
get_value
post_value & get_value
array(1) {
["post"]=>
string(10) "post_value"
}
array(1) {
["get"]=>
string(9) "get_value"
}
あ、あとPHP: コア php.ini ディレクティブに関する説明 - Manualを読んどこうね。
演算子の優先順位
<?php
//さてどう出力されるでしょう?
if( TRUE xor FALSE or TRUE ) echo "A";
if( TRUE xor FALSE || TRUE ) echo "B";
?>
結果
A
Bは条件式を通らないので出力されない。
じゃあこれはどうなっているのか。
<?php
$a = $b = $c = "t" ;
echo $a, $b, $c, "\n" ;
if( $d = $a ) var_dump($d) ;
if( $e = $a === "t" ) var_dump($e) ;
if(($f = $a)=== "t" ) var_dump($f) ;
?>
結果
ttt
string(1) "t"
bool(true)
string(1) "t"
三項演算子 ? ternary 条件文
<?php
$first = 1;
$second = 2;
$third = 3 ;
!$first ? var_dump($second) : var_dump($third) ;
$first ? var_dump($second) : var_dump($third) ;
?>
結果
int(3)
int(2)
制御構造
コロンを使った書き方
PHP: 制御構造に関する別の構文 - Manualを参照。。
<?php
if(TRUE) :
if(TRUE){echo"ECHO";}
endif;
if(TRUE) : ?>
<p>よくある使い方ですな。。</p>
<?php endif;
?>
結果
ECHO <p>よくある使い方ですな。。</p>
do-while文
最初にかならず do の部分が実行されることを除いて while と同等
<?php
do{
echo "DO!!";
} while (FALSE) ;
?>
結果
DO!!
break
for分などを抜ける。抜ける数を指定可能。ただし、ネスト数以上の数値を指定するとエラーになる。
<?php if(TRUE) break 100 ?>
結果
Fatal error: Cannot break/continue 100 levels in ファイルパス on line 1