コンテンツにスキップ

雑記

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 を使用する。