2
public function makeTweet( $DatabaseObject, $TextObject, $MessageObject)
{
    if( $DatabaseObject == NULL )
    {
        $DatabaseObject = new Database();
        $TextObject = new Text();
        $MessageObject = new Message();
    }
    $TweetObject = new ControlTweet();        
    $TweetObject->setObjects($DatabaseObject, $TextObject, $MessageObject);
    return $TweetObject;
}
4

3 に答える 3

1

PHPで関数をオーバーロードすることはできません。参考のためにこのページを参照してください:http ://www.daniweb.com/web-development/php/threads/19978/overloading-php-functions

于 2012-04-05T20:17:07.513 に答える
1

次のように、関数宣言にオプションのパラメーターを追加できます。

public function makeTweet( $DatabaseObject, $TextObject, $MessageObject = null)

これで、次のいずれかを実行できます。

$obj->makeTweet($db, $text, $messageObj);

また

$obj->makeTweet($db, $text);

これは、PHPで取得できる最も近いものです。

于 2012-04-05T20:17:15.777 に答える
-1

PHP関数「オーバーロード」される可能性があります。func_get_args関数で変数を使用および設定しないでください。

連想配列を単一の変数として送信することもできます。次に、関数内でextractを使用して、わかりやすい変数を作成できます。

$vars = array('key1'=>'value1','key2'=>'value3');

function function_name($v){
     extract($v);

    //do something
}

関数の動作が異なるようにするには、変数が何であるかを判別する必要があります。このようにして、オーバーロードのアイデアを反映できます。

于 2012-04-05T20:21:31.313 に答える