ホームページ > バックエンド開発 > PHPチュートリアル > PHP の高度なオブジェクト構築と複数のコンストラクターの使用_PHP チュートリアル

PHP の高度なオブジェクト構築と複数のコンストラクターの使用_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:21:03
オリジナル
1032 人が閲覧しました

以下は、PHP の高度なオブジェクト構築におけるオブジェクト構築に複数のコンストラクターを使用する原理を示すコード例です。

コードをコピーします コードは次のとおりです:

class classUtil {//これはパラメータ処理クラスです
public static function typeof($var){
if (is_object($ var)) return get_class($var);// オブジェクトの場合、クラス名を取得します
if (is_array($var)) return "array";// 配列の場合、"array" を返します
if (is_numeric($var)) return "numeric";//数値の場合は "numeric" を返す
return "string";//文字列は "string" を返す
}
public static function typelist($args){
return array_map(array("self", "typeof"),$args);//配列ループは、self::typeof
} を呼び出して、$args の各要素を処理します。
public static function callMethodForArgs($object,$args,$ name="construct"){
$method=$name."_".implode("_",self::typelist($args));//implode は、"_" を使用して配列要素を接続します。 string
if (!is_callable(array( $object,$method))){//is_callable() 関数は、$object::$method が呼び出し可能な構造体かどうかをテストします
echo sprintf("クラス %s にはメソッドがありません '$name ' を受け取ります。
"arguments (%s)",get_class($object),implode(",",self::typelist($args)));
call_user_func_array(array($object,$method),$ args);//call_user_func_array 関数呼び出し $object::$method($args)
}
}
}
class dateAndTime {
public function __construct(){//独自のコンストラクター
$args=func_get_args( );//パラメータを取得
classUtil::callMethodForArgs($this,$args);//パラメータ処理クラスのメソッドを呼び出す
}
public functionconstruct_(){//パラメータが空の場合
$this-> timetamp=time();
}
public functionconstruct_dateAndTime($datetime){// クラス自体の場合
$this->timetamp=$datetime->getTimetamp();
public functionconstruct_number($) timestamp){//数値の場合
$this->timetamp=$timestamp;
}
public functionconstruct_string($string){//時間文字列の場合
$this->timetamp=strtotime( $string);
}
public function getTimetamp(){//メソッド
return $this->timetamp;
}


上記のメソッドは、複数のコンストラクターの使用を示しています。実際、重要なことはパラメータを処理することであり、パラメータが文字、数値、クラスのいずれであっても、コードの柔軟性が向上します。


http://www.bkjia.com/PHPjc/324997.html

www.bkjia.com

http://www.bkjia.com/PHPjc/324997.html技術記事以下は、PHP の高度なオブジェクト構築におけるオブジェクト構築に複数のコンストラクターを使用する原理を示すコード例です。 コードをコピーします コードは次のとおりです: ?php class classUtil {//これは...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート