PHPの記事一覧

get_class_vars, get_object_vars

get_class_vars は、(引数で指定する)クラスで定義される変数を配列で返します。

get_object_vars は、(引数で指定する)オブジェクトで定義される変数を配列で返します。

どちらも、呼び出すスコープでアクセス可能な変数のみを抽出して返します。

class Item {
private $sales = 900;
public $price = 1200;
}
get_class_vars('Item');

のような場合、$price のみを抽出して返します。

DateTime クラス

日付や時刻の処理に便利なクラスDateTime。PHP5.2以降で使用可能。DateInterval等、PHP5.3以降で利用可能な機能もある。

$date = new DateTime();
$date->add(時間);

といった処理が楽にできる。上記はオブジェクト形式の場合。手続き型で記述する場合は、date_createを使用する。

従来の date 関数は、日付フォーマット文字列でデータを持っていた。表示するだけなら楽だが、日付の加減算や差分計算等は面倒だった。

Smarty

Smarty は、デザインテンプレート。プログラムから、ビュー部分を分離し独立して処理しやすくしたもの、と考えると良いだろう。

システムロジックと、デザインテンプレートとが独立平行して作成できれば、分業しやすい等開発効率でメリットがある。またウォーターフォールだけでなく、アジャイル開発も行いやすくなる(この辺は程度問題だが)。

Smarty を使うデメリットとしては、実行速度が遅くなる、という点があげられる。この点はキャッシュ機能等を上手く利用して回避したい。

タグ

Cannot modify header information – headers already sent

すでに何らかのHTML出力が行われている場合に、さらにヘッダー情報を出力しようとしたときに、この warning メッセージが表示される。

→この記事の続きを読む

タグ

__sleepと__wakeup

__sleepと__wakeupは、マジックメソッド(特殊なメソッド)。

__sleepが定義されているオブジェクトを、serialize関数でシリアル化すると、シリアル化の直前に__sleepが呼び出される。(実行例としては、データベース接続を切断する、保存されていないデータを保存する等)

__wakeupが定義されているオブジェクトを、unserialize関数で非シリアル化すると、非シリアル化の直後に__wakeupが呼び出される。(実行例としては、データベースと接続する、初期化する等)

(*) シリアル化とは、オブジェクトをデータベースやファイルに出力できる形式に変換する作業のこと。

タグ

PHP技術者認定試験

PHP技術者認定機構によるPHP技術者資格です。

→この記事の続きを読む

タグ

フレームワーク

ソフトウェアを作るための基礎部分のことです。一からシステム構築するのと比較すると、以下のようなメリットがあります。

  • 良く利用する機能を予め用意しておき、車輪の再発明を防ぐ。
  • セキュリティ対策等を自動で行う。
  • MVC を利用し、ロジックとレイアウトを分離する。
  • コーディング規則を統一し、複数人での開発やメンテナンスを容易にする。

一方で、デメリットもあります。

  • フレームワークのコーディング規則や設計思想などの学習コスト
  • 実行時の速度
  • フレームワーク自体のバージョンアップ時の対応

などがあげられます。

タグ

Unexpected

想定外の変数/定数/関数/オブジェクト等が見つかった場合に表示されるエラーメッセージ。Parse error: syntax error, unexpected T_STRING、Parse error: syntax error, unexpected T_VARIABLE、Parse error: syntax error, unexpected T_FUNCTION 等と表示される。

この場合、括弧の綴じ忘れ等のことも多いが、必要とされるモジュール等の不足、PHP バージョンの差異等が原因のこともある。ショートオープンタグの利用可否に依存しているケースもある。

環境により出たり出なかったりする場合は、PHP のバージョンや php.ini の設定、phpinfo() の情報等を比較すると、解決の糸口が見つかるかもしれない。

タグ

Deprecated

将来動作しなくなる(廃止予定)の関数等を使用している場合に表示される警告メッセージ。PHP5.3 で、E_DEPRECATED というエラーレベルが追加された。

PHP4 互換のスクリプトや、等では多くのコードが引っかかるようである。また、ereg() が deprecated となるようなので、preg_match() を使うのが好ましい。

なお、php.ini で
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
とすればエラー表示はされないが、本質的に解決するわけではない。スクリプトの修正/更新を早急にすべきであろう。

タグ

画面が真っ白

ブラウザ画面が真っ白になることがあります。何らかのエラーが発生していることが多いですが、様々な理由(下記参照)が考えられるため、エラーメッセージを確認すべきです。

  • スクリプトにエラーがある
  • PHP バージョンの違い
  • ライブラリ等の不足
  • セーフモードによる制限

エラーメッセージがブラウザに表示されない場合、エラーログファイルに保存される設定になっていることが多いです。エラーログファイルを閲覧すると、具体的なエラー内容が分かるはずです。

なお、ログファイルの場所は、サーバーにょって異なることがあります。お使いのサーバーの設定マニュアル等を参考にしてください。

タグ