雑記
PECL
$_REQUEST は現在の $_GET、$_POST、$_COOKIE などの内容をまとめた変数
PHP_EOL
echo $a1 .PHP_EOL;
\ ・・・名前空間の区切り文字
記号
@ エラー制御演算子
その式により生成されたエラーメッセージは無視されます。
改行
//<br />タグが挿入される。
echo nl2br("\n");
MVC の View
View については、Web サーバから見られる必要があるので、よく public_html というディレクトリ名が使われる。
stdClass()
PHP デフォルトのクラスで宣言することなく、いきなり new して使うことができる特殊なオブジェクト。
プロパティ
プロパティを使用するとき、先頭の「$」は不要。
class SpUser {
public $id;
public $user_name;
public $company_name;
public $email;
private $_errMessage="err";
public function __get($name)
{
if($name === 'errMessage') return $this->_errMessage;
}
}
$userInstancd = new SpUser();
$userInstancd->company_name = "paper";
echo "<pre>";
var_dump($userInstancd->company_name); #=> string(5) "paper"
echo "</pre>";
echo "<pre>";
var_dump($userInstancd->errMessage); #=> string(3) "err"
echo "</pre>";
プロパティ(getter、setter)
class SpUser {
public function __set($key,$value){}
public function __get($name)
{
if($name == "hasError") {
if(count($this->errMessageArray) > 0){
return true;
}else{
return false;
}
}
elseif($name == "errMessage") {
if(count($this->errMessageArray) > 0){
return join('<br>', $this->errMessageArray);
}else{
return "";
}
}
}
}
クラス(インスタンス)を arrayにキャストできる。
$userInstanceArray = (array)$userInstance;
=================================
$userInstanceArray['company_name']
※array型なので、取り出す時は「->」ではない。
2重ループのブレイク
break 2;
ハッシュ
$password = "1234";
$hashpassword = password_hash($password, PASSWORD_DEFAULT);
echo "<br>==================<br>";
var_dump($hashpassword );
var_dump(password_verify ( $password , $hashpassword ) );
echo "<br>==================<br>";
※文字列で比較する場合、"" でなく、'' で!
public function setDataFromPOST() {
$this->password = MSM_Utils_Text::escHtml($_POST['password'] );
$this->hashPassword = $this->createHashPassword($_POST['password']);
なぜか、
$this->createHashPassword($this->password);
だと、うまく認証できず。
$this->password の中身が、スペース扱いだった。
謎。
エラー制御演算子(@)
PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。
<?php
/* 意図的なエラー */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// この演算子は関数だけでなく、全ての式で動作します。
$value = @$cache[$key];
// インデックス $key が存在しない場合でも、警告を発生しません。
?>
GET/POST の識別
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// POST:フォームからの投稿などのとき
} else {
// GET:リンクのクリックによる表示のリクエストなどのとき
}
静的メソッド・インスタンスメソッド
class User {
public $id;
public $name;
public function instanceMethod() {
echo "instance Method";
}
public static function staticMethod() {
echo "static method";
}
}
User::instanceMethod(); //なんとコールできてしまう。(7 からは警告が出て、将来的にサポートされなくなる。)
雑メモ
array_slice 配列の一部を返す
shuffle 配列をシャッフル
sprintf フォーマットされた文字列を返す
explode splitに相当(splitは廃止された)
empty "", 0, "0" が Trueだよ!
sprintf('%02d', 1); // 01
sprintf('%03d', 1); // 001
sprintf('あなたのIDは%04dです', 1); // あなたのIDは0001です
$value = rtrim($value, '/');
boolean型は、echoで出力できない?
var_dump を使用する。