1

関数を呼び出すときに引数が多すぎないようにする方法はありますか?

Eg:
function myFunction($usrName,$usrCountry,$usrDOB//and many more){
    // Do something with all those arguments here
}

これを行う1つの方法は、定数を定義することです

//After thorough checking

$sesUserName = $_SESSION['sesUserName'];

define('USERNAME', $sesUserName);

myFunction(){
    // Do something with USERNAME here
    // No need to use USERNAME when calling the function
}

しかし、これを行う他の方法はありますか?

4

5 に答える 5

4

1 つのアプローチは、OOP プログラムの使用を開始し、ユーザー オブジェクトを作成することです。これにより、プロパティや定数の任意のグループではなく、ユーザーを単一のエンティティとして使用できます。

<?php 

   class User {
        public $name;
        public $country;
        public $dateOfBirth;
        // for stuff that a user does or is define as instance methods
        public function isUserOver18(){
            return time() < strtotime("+18 years", strtotime($dateOfBirth));
        }
   }

   $user = new User();
   $user->name = $data["name"];
   $user->country = $data["country"];
   $user->dateOfBirth = $data["dob"];

   if ($user->isUserOver18()){
       // show page
   } else {
       echo "You must be 18 years or older to view this video";
   }

   // for stuff that is done to a user pass it in as an argument. 

   notifyUser($user, "You've got mail");
于 2013-06-02T04:44:03.420 に答える
2

大量のパラメーターを渡す必要がある巨大な関数を作成する代わりに。オブジェクト指向プログラミングについて学び、PHP クラスを作成します。

これらのテクニックを習得すれば、プログラミングに対する見方が完全に変わることを約束します。データベース操作、ユーザー管理システムなど、頻繁に行うことのために再利用可能なクラスを作成できます。

オブジェクトとクラスを使いこなすことが、凡庸なプログラマーと優れたプログラマーを分けるものです。

これは、PHP でのオブジェクト指向プログラミングに関する優れた初心者向けチュートリアルです。

于 2013-06-02T04:43:00.403 に答える
0

実際、Zend Framework 1.x には、パラメーターを処理するための非常に優れた実装がありました。ルールはとてもシンプルです。3つ以下のパラメータが必要な場合は、直接指定してください。ただし、すでに 3 つ以上が必要な場合は、3 番目のパラメーターを配列にする必要があります。呼び出し時に、キーと値のペアの値の配列を指定するだけです。実際に経験に基づいてかなりいいです。

于 2013-06-02T04:45:56.967 に答える