オブジェクト指向PHP

最新情報

DateTime クラス

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

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

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

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

Smarty

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

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

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

タグ

イテレータ

デザインパターンの一つ。反復作業を行う時に重宝する。

→この記事の続きを読む

タグ

bindParam と bindValue

PDO でプレースホルダーを利用するとき、bindParam や bindValue を使うことがある。これらは、変数をホルダー部分に当てはめる点では同じだが、当てはめを行うタイミングが異なる。

→この記事の続きを読む

タグ

Cannot modify header information – headers already sent

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

→この記事の続きを読む

タグ

__sleepと__wakeup

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

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

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

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

タグ

PHP技術者認定試験

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

→この記事の続きを読む

タグ

PDO

php5.1以降で標準利用可能なエクステンション。(念のためphp.iniは確認しておく)

最初に、new PDO($database, $user, $password)(databaseはmysql:dbname=hogehoge;host=localhostのような形式)でデータベースの種類を指定する必要があるが、それ以後のクエリ発行等は原則として特定のデータベースに依存しない形で記述できる。

プリペアードステートメントに対応。
$db->prepare(SQL文);
$db->bindParam(プレースホルダ、変数の値);
これを利用すれば、自動的にエスケープされるのでSQLインジェクション脆弱性を未然に防ぐことが可能。また類似したクエリが多数ある場合は、処理速度に大きく影響する。

タグ

フレームワーク

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

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

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

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

などがあげられます。

タグ

doctest

スクリプト本体にコメントとして記述したテストコードを、テストとして実行する。

ソースコードにテストコードを記入するため、手軽にテストを書くことができる。反面、テストコードの量が増えるとソースの可読性が落ちる可能性が高い。単体テストのすべてをdoctestで行うのは非現実的かもしれない。

元々は、Python doctestらしい。PHP では、rhaco の他、Maple や symfony などのフレームワークで、python の doctest に近いものを実装する試みがなされている。

タグ