1

OK、問題は、外部構成に依存して機能し検証するクラスを使用していることですが、これらのプロパティは非常に多いため、それらをインポートする方法を知りたいです。

だから、これがクラスだと想像してください:

   class doSomething{

        public function __construct($conn){
            $this->conn = $conn;
        }

        public function validateURL($url){
            //do something with $url
        }

        public function validateName($name){
            //do something with $name
        }

        public function validateAge($age){
            // process age
        }

        public function lookEmailInDatabase($email, $table){
            // process data
        }

   }

さて、上記がと呼ばれるファイル内にあると仮定しましょうdoSomthingClass.php

したがって、これらのプロパティの値を宣言する別のクラスがあると仮定しましょう

function declareProperties($val){

    $conn = new PDO(...);
    $url = 'http://foo.com';
    $name = 'john';
    $age = '17';
    $email = 'simon@yahoo.com';
    $table = 'foobartar';

    return $val;


}

さて、問題は、これらのプロパティをこのクラスにエクスポートするための非常に効率的で最良の方法は何かということです。

4

2 に答える 2

0

魔法の方法__get()とを使用するのはどうですか__set()

public $vars = array();

public function __get( $key )
{
    if( isset( $this->vars[$key] ) )
    {
        return $this->vars[$key];
    {
    else
    {
        return false;
    }
}

public function __set( $key, $value )
{
    $this->vars[$key] = $value;
}

例として、 $row がデータであるとしましょう。列名をプロパティ名として使用する場合 (構造を適切に計画している場合は、これも良い方法です)、次のようなメソッドを作成できます。

public function load( $row )
{
    if( is_array( $row ) )
    {
        foreach( $row as $key => $value )
        {
            $this->$key = $value;
        }
        return true;
    }
    return false;
}

編集:

必ずしもこのように変数を渡す必要さえありません。パブリック メソッドを外部で使用できます。

$foo = new foo( $db );

$foo->bar( $three, $external, $params );

これはあなたのアプリケーションで機能しますか?

于 2013-09-26T18:45:44.327 に答える