PHP: echo / print / print_r / var_dump / var_export などありますが…どれ使えばいいの?

PHPって変数の中身を参照する関数がたくさんありますが,どれを使用すれば良いのか?考えてみました.

出力結果の書式,内容を参照して考えると…

変数の中身みるだけなら echo
デバッグ時などで,型情報もみる必要があるなら var_dump
って感じで良いのではないかと考えています.

なんで,こんなに沢山あるのかな?

PHP: クォート,エスケープの違い

PHP 関連の解説記事などを読んでいて,用語の使い方で違和感を感じたので調べてみた.
個人的には,クォートとエスケープは異なるものと感じていたのに,解説記事などでは同意として使用されているようで,少し違和感を感じました.

参考: 「クォート」「エスケープ」「エンコード」の違い

上記,QAサイトに同じようなことを質問されている方がいました.
回答として,「クォートとエスケープは現状では同じ意味として使われています。
本来は、
クォート:「決まった文法の中で特別な意味を持った文字の特別な意味をなくしその文字そのものと扱いたい時に行うこと」
エスケープ:「文字に元の意味で無い別の意味を与えるときに行うこと」
と全く別なのですが。」
とのこと.
PHP 界隈では同義として語られることが多いのでしょう.たぶん.

PHP: シングルクォーテーション,ダブルクォーテーションの違い

他の言語経験者が PHP を学んでいて少し驚く点じゃないでしょうか?
PHP では,意味が違うようです.

‘(シングル クォーテーション) : 文字列中の変数を置換しない
“(ダブル クォーテーション) : 文字列中の変数を置換する

PHP: 変数がセットされていることを確認する方法

if ($var), isset, empty, is_null など,変数の値のセット状況を判定する方法がある.
それぞれの違いについて調べてみた.

参考: PHP isset, empty, is_null の違い早見表

「if ($var) / empty」と「isset / is_null」は判定結果が逆となっていますね.

設定済みの判定は,if (!empty($var)) がいいのかな?

PHP初学者のプログラミング Tips

他のプログラミング経験者が PHP のコードを見て,「PHPってこうやるんだなぁー」と感じたところをメモしておきます.

‘?’で区切られた最初の値を取得する

list( $activate_path ) = explode( ‘?’, wp_unslash( $_SERVER[‘REQUEST_URI’] ) );

ファイルの有無を判断する

if ( file_exists( ABSPATH . ‘wp-config.php’ ) ) {

クラスのインスタンスか?判定する

型演算子 instanceof を使用する.

バージョン比較する

version_compare( phpversion(), ‘7.0.16’, ‘>=’ )

カレントディレクトリの指定ファイルを処理する

require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );

リクエスト種別を判断する

if ( ‘POST’ != $_SERVER[‘REQUEST_METHOD’] ) {

指定文字列が含まれていないことを確認する

if ( 0 === strpos( $_SERVER[‘REQUEST_URI’], ‘http’ ) ) {

フォルダにある処理が記述されていない index.php はファイル一覧を公開しないためのファイル

WordPress には,セキュリティーに配慮した,以下の記述のみの index.php が配置されているディレクトリがある.

1
2
<?php
// Silence is golden.

javascript を使用する

1
2
3
4
5
6
<?php if ( ! empty( $input_id ) ) : ?>
<script type="text/javascript">
try{document.getElementById('<?php echo $input_id; ?>').focus();}catch(e){}
if(typeof wpOnload=='function')wpOnload();
</script>
<?php endif; ?>

@(エラー制御演算子)

「PHP はエラー制御演算子(@)をサポートしています。PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。」
とのこと.あまり使用しない方が良い気がしますね.
参考: エラー制御演算子

コロン構文

if文などで,本来「{」があるべき箇所に「:」があったので調べてみた.
php では,コロン構文といい,HTMLタグとPHPの処理が混在する箇所で使用されているらしい.
判定処理が複数のタグに渡る場合などは使用せざるを得ないですね.

グローバル変数

PHP の独自言語仕様と思える箇所もあるので,global キーワードなど最初にチェックしておいた方が良いと思います.

参考: PHP $GLOBALS(グローバル変数)のすべて!【初心者向け基本】

定数定義

クラス外で定数を定義する場合,define,クラス内で定数を定義場合,const.という使い分けで良いと思います.

用語

PEAR (PHP Extension and Application Repository) : PHPで記述されたPHP拡張ライブラリ
PECL (PHP Extension Community Library) : C言語で記述されたPHP拡張ライブラリ

PhpStorm で Git リポジトリにプロジェクトを追加する方法

1. バージョンコントロールで git を選択

VCS – Enable Version Control Integration …

2. プロジェクト フォルダを add,commit する

処理時にアナライズ処理?が入るため,大量にコミットする場合は,SourceTree の方がいいかも?

参考: Gitリポジトリを設定する
参考: JetBrains IDE(IntelliJ IDEAなど)を使う時のgitignoreについて

API 開発時の便利ツール Postman

API 開発時にレスポンス内容を確認したり,テスト実行したり,環境変数に応じて URL を変更したりできる.
便利ツールの個人的なメモ.

クライアントアプリは以下からダウンロードできる.
Postman

アプリの使い方,何ができるか?は以下の良記事を読めば把握できる.
参考:API開発・テスト便利ツール Postmanの使い方メモ
参考:APIの開発がむちゃくちゃ捗る「Postman」の使い方
参考:RESTサービスを触る際の必須ツールPostmanを使ってみました
参考:[ツール] Postmanを利用したAPIの試験 [機能の紹介]

PHPの終了タグは付けない方がいい件

先日,PHPの header 関数でリダイレクトする処理を記述したのですが,どうしてもリダイレクトしてくれなくて,色々試した結果,PHPの終了タグ「?>」が記述されているとリダイレクトしないという現象に遭遇しました.

私の認識では,PHPの終了タグはあっても,なくても,どちらでも良いものという認識であったため,少し驚きました.
(いかなる場合においても,あった方が良いくらいの認識でした.)

リダイレクトしない理由として,直前にHTML出力があるとリダイレクトしないというのは,なんとなく出力バッファなどの理由により,問題があるような気がするのですが,終了タグというのは想像できませんでした.…というわけで,メモしておきます.

参考:PHPの最後の終了タグ ?> は付けないでおこうねというお話