チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

PHPの言語仕様ー基本(主に変数、定数、エラーのこととか)

◆変数

・可変変数(変数に文字列を入れるとその名前の変数を読むやつ。$$)

<?php

$var = 4;

$var_name='var';

echo $$var_name,PHP_EOL;

 

$$とあるので最初は'var'文字列が評価され、

二回目の$で$var=4だから

結果として4が表示される。やるじゃんPHP

 

◆グローバルスコープとローカルスコープ

変数の基本はグローバル。

でも関数、クラス内はローカルなので他からはアクセスできない。

エラーに注意。

ローカルスコープ、関数とかでどうしてもグローバルを使いたい場合は、

global $foo;

これで使える。

※ただし呼び出された時の変数の値が読まれるので値が変わることあり。

つまりあまり推奨はされてない。

 

◆定義済み変数

$php_errormsg とか

$_SERVER とか。いろいろあるっっぽい。

ちなみに$_SERVERはスーパーグローバル変数でもあるらしい。

 

◆スーパーグローバル変数

あらゆるスコープから参照可能なグローバル変数

重要そうだから本に書いてたの全部メモ。

$GLOBALS グローバル変数への参照をもつ連想配列

→echo $GLOBALS['test'],PHP_EOL; てな感じでつかう。やっぱりこれも多用厳禁。

 

$_SERVER スクリプトのヘッダ、パスなどの情報

→どんな値が入ってるかは環境に依存する。

var_dump($_SERVER); で確認するといい。

 

$_GET   URLパラメータ

$_POST   POSTで渡された変数

$_COOKIE クッキーから渡された変数

→とにかく超使う。

 

$_FILES  アップロードされたファイル情報

$_REQUEST $_GET,$_POST,$_COOKIEをまとめた連想配列

$_SESSION セッション変数

$_ENV   環境変数

 

 

◆定数定義

あらゆるスコープからアクセス可能。$がいらない。

整数、小数点、文字列のみ入れられる。

配列、オブジェクトは×

define(’BOOK','Perfect PHP'); //Perfect PHPという文字列をBOOKという定数で定義。

echo BOOK,PHP_EOL;

 

◆Constant()関数

文字列から該当する定数を取得。

define('BOOK','Perfect PHP');

$value='BOOK';

echo constant($value),PHP_EOL;  //Perfect PHPと表示

 

◆定義済み定数

PHP_VERSION 実行してるPHPのバージョン番号

PHP_OS    実行されてるOSの種類

PHP_EOL   実行されてる環境での改行コード

STDIN               //標準入力ストリーム

E_WARNING    //warningのエラー番号

 

ちなみに var_dump(get_defined_constants()); で大量の定数確認ができる。

 

◆マジック定数

__FILE__      ファイルのフルパストファイル名

__DIR__      ディレクトリ名

__LINE__      現在の行番号

__FUNCTION__   関数名

__CLASS__     クラス名

__METHOD__    メソッド

__NAMESPACE__  名前空間の名前

 

◆エラーの種類

素人なら絶対出るのでヒントになるはず。

E_PARSE  

文法エラーのこと 括弧とかセミコロンとか。実行もしてくれない。

 

E_ERROR  

Fetal errorだったり。同じ名前のクラス定義とか、定義してない関数呼び出しとか。一応そこまでは実行される。

 

E_WARNING

警告。呼び出す関数の引数の型とか、引数の数とかたくさんある。

 

E_NOTICE

重要度の低い警告。E_WARNINGとの違いは、「PHPが自動的に頑張ってなにかの対処をする」ってところ。 

 

E_DEPRECATED

PHP5.3以降導入。

以前はよかったのに今は非推奨になったから表示されてる警告。

 

E_STRICT

互換性維持のため、変更したほうが良い時に警告。

 

 

◆ユーザエラー定数

わざとエラーを発生させたい時使う。

E_USER_ERROR    致命的なエラーFetal error

E_USER_WARNING   重要な警告

E_USER_NOTICE    警告

E_USER_DEPRECATED 将来廃止予定機能の警告

 

◆エラーの設定

error_reporting

どのエラーをを報告するか指定する設定。

E_ALL定数というのあり。これは特別な値として、E_STRICT除いた全てのエラー定数。設定するにはphp.iniにかく。

 

error_reporting = E_ALL

→E_STRICT以外全て報告する

 

error_reporting = E_ALL ^ E_NOTICE ^ E_DEPRECATED

→E_STRICT , E_NOTICE , E_DEPRECATED以外は報告。本番環境用。

  

error_reporting = E_ALL | E_STRICT

→E_STRICTを含む全てのエラー報告する。開発環境用。

 

他エラーの設定↓

display_errors = On  //開発環境用 エラー表示

display_errors = Off  //本番環境用 エラー非表示

 

log_errors = On  //同上 ログ出力する  基本Onで良い!

log_errors = Off 

 

error_log = /var/log/php.log  //通常これでいい。ファイル名の指定可能。