PHPのTips(含・方言) [PHP]

必要なクラスファイルを自動でインクルードする

前提1

クラス名.class.php で、1クラス1ファイルにしておく。

前提2

autoload.phpを作る。

<?php
function __autoload($name) {
require_once($name.’class.php’);
}
?>

使い方

require_once(‘autoload.php’);
$object = new MyClass();

new MyClass() すると MyClass.class.php が自動的にインクルードされる。

 

未定義のメソッドを呼んだらどうなるか?

答:__call メソッドが実行される。

ちなみに__callメソッドは、メソッド名と引数値の配列を受け取る。

 

未定義のプロパティを取得/設定しようとしたらどうなるか?

答:__getメソッド、__setメソッドが実行される。

 

オーバーロード?

通常の意味のオーバーロード

public void getAbs(int i ) { return iの絶対値; }
public void getAbs(float f) { return fの絶対値; }
public void getAbs(double d) { return dの絶対値; }
のように、同名のメソッドを引数の内容(シグネチャ)によって切り替えること。
似た機能に少しずつ異なる名前を付ける不便を解消する。

PHPで言うところのオーバーロード

上で出た、未定義のメソッドを呼ぶと__callが実行されること。意味不明。

※PHPでは変数のデータ型を意識しないので、とりあえず受け取って、メソッド内で仮引数のデータ型をチェックして振り分ければよいのか?

function hoge() {
$args=func_get_args(); //引数を配列$argsにセット
if (is_numeric($args[0])) {
//最初の引数が整数だったときの処理
}
}

書籍感想

ほしのあきサイバークローン

無料サンプル、ブログライター、ブログで口コミプロモーションならレビューブログ

フルみっく
伝染歌プレーヤー

急上昇キーワード

ゲーマータグ

Powered by Movable Type 4.25