[PHP-users 2433] Re: 関数への引数の制限は?

Kentaro Fujinuma php-users@php.gr.jp
Wed, 3 Oct 2001 17:37:09 +0900


藤沼@イイガです。

<CC14BDD89F48Fseto@cii.gr.jp> の、
   "[PHP-users 2432] Re: 関数への引数の制限は?" において、
   "Seto <seto@cii.gr.jp>"さんは書きました:

> 水迫さん疑問の本質と外れてしまいますが
> 関数呼び出しの引数に連想配列をつかわれてはどうでしょうか。

あるいは引数となるデータを保持するクラスを定義するという手段も
あるかもしれません。$word{N} に保持させたいデータ形式に制限を
加えたい場合にはこの方式が適していると思います。

関数用ファイル:func.php

class HogeContainer {
    var $word1;
        :
        :
    var $word100;

    // 引数の制約を記述

    // 例えば word1 は整数でないといけないとか
    function setWord1($word1) {
        if (is_int($word1)) {
            $this->word1 = $word1;
        } else {
            // エラー処理
        }
    }
        :
        :
}

function hogehoge($hogeArg) {
    // Polymorphism がサポートされてないのは不便だなあ・・・
    if (is_object($hogeArg) && get_class($hogeArg) == "HogeContainer") {
      // 何らかの処理
      return $result;
    } else {
        // エラー処理
    }
}

利用するファイル:body.php
include 'func.php';

$aHogeArgs = new HogeContainer();
$aHogeArgs->setWord1("*******");
 ・
 ・
$aHogeArgs->setWord100("*******");

$result_data = hogehoge($aHogeArgs);

> コーディングもすっきりすると思いますが。

引数が 100 もあると可読性が著しく悪化しそうですね。

それではよろしくお願いします。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Kentaro Fujinuma / IIGA Co., Ltd. / Network Administrator
 Contact: E-mail: fuji@iiga.co.jp 
          Tel: 03-5296-0389 / Fax: 03-5296-0386
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-